我正在使用此代码查找数组中搜索值的索引。我收到一个错误,这与常量 vector 有关,但我不知道如何修复它。
int linearFind( const vector<int>& vec, int y){
vector<int>::iterator t=find(vec.begin(), vec.end(), y);
if (t != vec.end())
return (t-vec.begin());
else
return -1;
}
最佳答案
问题是,如vec
传递为 const&
,其 begin
返回的迭代器和end
是std::vector<int>::const_iterator
s,不是std::vector<int>::iterator
s。因此,find
还将返回 std::vector<int>::const_iterator
无法转换为 std::vector<int>iterator
因为这会下降 const
.
所以要解决这个问题,要么使用
std::vector<int>::const_iterator t = find(vec.begin(), vec.end(), y);
的,如果你使用C++11或更高版本,就更容易
auto t = find(vec.begin(), vec.end(), y);
关于c++ - 查找 vector 中的值索引位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35167251/