在没有开始和结束的情况下迭代向量

时间:2014-05-16 12:51:12

标签: c++ vector

我有一个关键字矢量,我需要迭代它。

我的尝试:

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&)'|

1 个答案:

答案 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