C++ C++;在向量上使用方法(如果是word)

C++ C++;在向量上使用方法(如果是word),c++,vector,C++,Vector,所以我定义了两个方法,一个检查下一个是否是单词,一个检查是否有下一个单词 我为文本文件获取输入,将文件内容添加到向量,然后使用for循环 我可以通过简单地在向量中执行for循环来实现它: for (int x = 0; x != v2.size(); ++x) { 但是我想用我的两种方法 bool ReadWords::isNextWord() 及 那么我该怎么做呢 vector<string> bigTextFile; vector<string> vct; w

所以我定义了两个方法,一个检查下一个是否是单词,一个检查是否有下一个单词

我为文本文件获取输入,将文件内容添加到向量,然后使用for循环

我可以通过简单地在向量中执行for循环来实现它:

 for (int x = 0; x != v2.size(); ++x) {
但是我想用我的两种方法

bool ReadWords::isNextWord()

那么我该怎么做呢

vector<string> bigTextFile;
vector<string> vct;

while(vct.isNextWord) {
      vct.getNextWord

      if(vct.getNextWord == bigTextFile[i] {
         counter++
     }
}
vector bigTextFile;
向量vct;
while(vct.isNextWord){
vct.getNextWord
if(vct.getNextWord==bigTextFile[i]{
柜台++
}
}
如果您需要更多的代码,请告诉我这是什么:

vector<string> bigTextFile;
vector<string> vct;

while(ReadWords::isNextWord(vct)) 
{
      string nextWord = ReadWords::getNextWord(vct);

      if(nextWord  == bigTextFile[i]) 
      {
         counter++;
      }
}
vector bigTextFile;
向量vct;
while(ReadWords::isNextWord(vct))
{
字符串nextWord=ReadWords::getNextWord(vct);
if(nextWord==bigTextFile[i])
{
计数器++;
}
}
你可以让你的函数接受一个向量作为参数,然后在每个函数中对向量进行处理。我不能100%确定你的实现是什么,因为它不是完整的代码。

这是怎么回事:

vector<string> bigTextFile;
vector<string> vct;

while(ReadWords::isNextWord(vct)) 
{
      string nextWord = ReadWords::getNextWord(vct);

      if(nextWord  == bigTextFile[i]) 
      {
         counter++;
      }
}
vector bigTextFile;
向量vct;
while(ReadWords::isNextWord(vct))
{
字符串nextWord=ReadWords::getNextWord(vct);
if(nextWord==bigTextFile[i])
{
计数器++;
}
}

你可以让你的函数接受一个向量作为参数,然后在每个函数中对向量进行处理。我不能100%确定你的实现是什么,因为它不是完整的代码。

我不确定你为什么要尝试编写一个对象,但下面是我解决问题的方法:

步骤1.为单词创建谓词

bool is_needed_word(const std::string& word, const std::vector<std::string>& needed_words)
{
    if (std::find(needed_words.begin(), 
                  needed_words.end(), 
                  word) != needed_words.end())
        return true;
}

//some where in your function
std::vector<std::string> needed_words{"apple", "moon", "etc"};
auto predicate = [&needed_words](const auto& word)
                 {return is_needed_word(word, needed_words);}
bool是需要的单词(const std::string&word,const std::vector&needed单词)
{
if(std::find(所需的)单词.begin(),
所需单词。结束(),
word)!=所需单词。end()
返回true;
}
//在你的职能中的某些方面
向量需要{“苹果”、“月亮”、“等等”};
自动谓词=[&所需的单词](const auto&word)
{return is_needed_word(word,needed_words);}
步骤2.复制/计数/对流中的单词执行任何操作

//copying
std::vector<std::string> extracted_words;
std::ifstream input_file{"input.txt"};
//check if opened correctly
std::copy_if(std::istream_iterator<std::string>(input_file), {},
             std::back_inserter(extracted_words));

//counting
std::size_t occurrence_counter = std::count_if(std::istream_iterator<std::string>(input_file),{},predicate)
//复制
std::向量提取的_字;
std::ifstream输入文件{“input.txt”};
//检查是否正确打开
std::copy_if(std::istream_迭代器(输入文件),{},
std::back_inserter(提取的单词));
//计数
std::size\u t occurrence\u counter=std::count\u if(std::istream\u迭代器(输入文件),{},谓词)

我不确定您为什么要尝试编写对象,但以下是我解决问题的方法:

步骤1.为单词创建谓词

bool is_needed_word(const std::string& word, const std::vector<std::string>& needed_words)
{
    if (std::find(needed_words.begin(), 
                  needed_words.end(), 
                  word) != needed_words.end())
        return true;
}

//some where in your function
std::vector<std::string> needed_words{"apple", "moon", "etc"};
auto predicate = [&needed_words](const auto& word)
                 {return is_needed_word(word, needed_words);}
bool是需要的单词(const std::string&word,const std::vector&needed单词)
{
if(std::find(所需的)单词.begin(),
所需单词。结束(),
word)!=所需单词。end()
返回true;
}
//在你的职能中的某些方面
向量需要{“苹果”、“月亮”、“等等”};
自动谓词=[&所需的单词](const auto&word)
{return is_needed_word(word,needed_words);}
步骤2.复制/计数/对流中的单词执行任何操作

//copying
std::vector<std::string> extracted_words;
std::ifstream input_file{"input.txt"};
//check if opened correctly
std::copy_if(std::istream_iterator<std::string>(input_file), {},
             std::back_inserter(extracted_words));

//counting
std::size_t occurrence_counter = std::count_if(std::istream_iterator<std::string>(input_file),{},predicate)
//复制
std::向量提取的_字;
std::ifstream输入文件{“input.txt”};
//检查是否正确打开
std::copy_if(std::istream_迭代器(输入文件),{},
std::back_inserter(提取的单词));
//计数
std::size\u t occurrence\u counter=std::count\u if(std::istream\u迭代器(输入文件),{},谓词)


C++有很多不错的功能。我相信你会发现一些有用的功能。你不能在
std::vector
中添加函数。如果你看一下
std::unordered\u set
,可能不会有什么坏处。你能发布你的整个实现吗?如果你不得不问“如果你需要更多的代码,请告诉我”答案可能是“是的”,我们是.<代码> Read Word <代码>一个类或一个命名空间,它的成员是什么?C++有很多好的东西。我相信你可以找到一些有用的东西。你不能给函数添加函数,<代码> STD::向量。如果你看一下<代码> STD::unOrdEdEdTys,它可能不会伤害。你能发布你的整个实现吗?如果你必须问“如果您需要更多的代码,请告诉我”,答案可能是肯定的,我们需要。是
ReadWords
类还是名称空间?它的成员是什么?我尝试过一次,但我得到了错误`没有匹配的函数调用'ReadWords::isNextWord(std::vector&)“|当然,因为您还没有提供接受该参数的函数重载…^是的,如果不允许我编辑头文件,您需要修改代码和函数以接受向量作为参数/argument.Hmm,即将isNextWord保留为
bool isNextWord()
是否可以只更改readWords cpp文件以接受向量作为参数?否,标头中的方法/函数定义必须与cpp中的方法/函数定义匹配我尝试过一次,但我得到错误“没有匹配的函数用于调用”readWords::isNextWord(std::vector&)“|当然,因为您还没有提供接受该参数的函数重载…^是的,如果不允许我编辑头文件,您需要修改代码和函数以接受向量作为参数/argument.Hmm,即将isNextWord保留为
bool isNextWord()
是否可以只更改readWords cpp文件以接受向量作为参数?不可以,标题中的方法/函数定义必须与使用查找和谓词算法的cppA更高级答案中的方法/函数定义相匹配。不重新发明轮子的要点。使用查找和谓词算法的更高级答案。使用查找和谓词算法的要点而不是重新发明轮子。