我希望用这段代码找到数组中搜索值的索引。我收到一个错误,这与常量向量有关,但我不确定如何修复它。
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;
}
答案 0 :(得分:3)
问题是,当vec
作为const&
传递时,其begin
和end
返回的迭代器为std::vector<int>::const_iterator
,而不是{{} 1}}秒。因此,std::vector<int>::iterator
也会返回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);