Find function not working with vector of strings
本问题已经有最佳答案,请猛点这里访问。
我有一个作业,我需要通过一个字符串向量。但是我的功能不能正常工作。当我试图编译它时,我在"std::uuVector………"中得到一个错误"no member named‘find’"。
我将包含我的头文件以及实现文件中的这个函数。有人能帮我找到这个问题吗?不知道为什么不能用这些find函数编译…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <iostream> #include <fstream> #include <string> #include <ctype.h> #include <sstream> #include"DictionarySet.h" #include <cstdlib> #include <vector> using namespace std; bool DictionarySet::Contains(string word){ if(Standard.find(word) != Standard.end()) return true; if(User.find(word) != User.end()) return true; if(Temporary.find(word) != Temporary.end()) return true; if(isupper(word[0])) { word[0] = tolower(word[0]); if(Standard.find(word) != Standard.end()) return true; if(User.find(word) != User.end()) return true; if(Temporary.find(word) != Temporary.end()) return true; } return false; } |
这是头文件,如果你需要的话
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #ifndef _DICTIONARYSET_H #define _DICTIONARYSET_H #include <vector> #include <string> //*** include suitable STL container using namespace std; //*** Deal with namespace class DictionarySet { const char * const StandardDictionary; char * UserDictionary; string DictionaryPath; void ReadDictionary(const char * const DictionaryName, vector<string> &Set); public: /*** STL container ***/ std::vector<std::string> Standard; /*** STL container ***/ std::vector<std::string> User; /*** STL container ***/ std::vector<std::string> Temporary; bool Contains(string word); void Add(string word); void Ignore(string word); void Initialize(); DictionarySet(const char * const SD ="/usr/share/dict/words", const char * const UD = "_Dictionary"); ~DictionarySet(); }; #endif |
std::vector没有定义find函数。它出现在
1 2 3 4 5 6 7 8 9 | #include std::vector<item_type>::iterator it; if ( ( it = std::find( vector.begin(), vector.end(), item)) != vector.end()) { // found, use iterator it } else { // not found, it == vector.end() } |
对于
1 2 3 | if (std::find(Standard.begin(), Standard.end(), item) != Standard.end()) { return true; } |
使用