在c ++中搜索特定索引的Vector元素

时间:2015-06-25 19:42:06

标签: c++

vector<int>v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
int pos = find(v.begin(),v.end(),4)-v.begin();

Answer : pos = 3

find()将从头到尾搜索并返回索引 有没有办法从特定的索引搜索,比如我想从向量中的索引2到4进行搜索。

2 个答案:

答案 0 :(得分:2)

是的,您可以使用添加操作。

vector<int>v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
int pos = find(v.begin()+2,v.begin()+4, 4)-(v.begin()+2);

Answer : pos = 3

答案 1 :(得分:2)

std::findstd::distance的使用为您提供了索引:

#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;
int main()
{
    vector<int>v = {1, 2, 3, 4, 5};
    auto pos = distance(v.begin(), find(v.begin() + 2, v.end() + 4, 4));
    cout << pos;
}

Output: 
3