2016-02-03 2 views
2

Я ищу, чтобы найти индекс искомого значения в массиве с помощью этого кода. Я получаю сообщение об ошибке, которое связано с постоянным вектором, но я не уверен, как его исправить.Поиск позиции индекса в векторе

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; 
} 

ответ

3

Проблема заключается в том, что, как vec передается как const&, итераторы, возвращаемый его begin и end являются std::vector<int>::const_iterator s, а не 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); 
Смежные вопросы