在向量中查找值索引位置

时间:2016-02-03 02:03:31

标签: c++ 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;
}

1 个答案:

答案 0 :(得分:3)

问题是,当vec作为const&传递时,其beginend返回的迭代器为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);