我有一个关键字矢量,我需要迭代它。
我的尝试:
bool isKeyword(string s)
{
return find(keywords, keywords + 10, s ) != keywords + 10;
}
然而,这适用于数组但不适用于矢量。如何更改+ 10以迭代向量?我需要这个,因为我不能使用end并开始因为我没有C ++ 11支持。
给出上述代码的错误:
error: no matching function for call to 'find(std::vector<std::basic_string<char> >&, std::vector<std::basic_string<char> >::size_type, std::string&)'|
答案 0 :(得分:2)
像这样使用begin()
和end()
:
find(keywords.begin(), keywords.end(), s )
以下是一个例子:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm> // std::find
using namespace std;
bool isKeyword(string& s, std::vector<string>& keywords)
{
return (find(keywords.begin(), keywords.end(), s ) != keywords.end());
}
int main()
{
vector<string> v;
string s = "Stackoverflow";
v.push_back(s);
if(isKeyword(s, v))
cout << "found\n";
else
cout << "not found\n";
return 0;
}
正如其他人所说,此应用程序不需要C++11
。
参考,std::find
。