我目前正在编写一个线性搜索方法来搜索向量,但它会在向量中的每个项目上返回true。我需要它才能返回第一个找到的值的位置。
int linearSearch( const vector<int>& vec, int x)
{
vector<int>::const_iterator t = find(vec.begin(), vec.end(), x);
if (t != vec.end())
return (t-vec.begin());
else
return -1;
}
答案 0 :(得分:1)
我想你可能想在这个问题上使用std::distance
,即
int linearSearch( const vector<int>& vec, int x)
{
return std::distance(find(vec.begin(), vec.end(), x), veg.begin());
}
这样您就可以直接访问输入向量x
中vec
的位置。如果x
不在vec
,则结果将等于vec.begin()
和vec.end()
之间的距离。