Теперь у вас есть итератор, а не значение, поэтому вы должны разыменовать его. И используйте префикс ++, а не постфикс ++. Postfix ++ необходимо создать временный, а префикс ++ нет, сравните раздел принудительного применения http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rp -waste .
for (vector<int>::iterator x = stariFinale.begin(); x != stariFinale.end(); ++x)
if (q == *x)
return true;
Другой вариант, который требует меньших изменений кода, - это иметь итератор и старая переменная x:
for (vector<int>::iterator iter = stariFinale.begin(); iter != stariFinale.end(); ++iter) {
int x = *iter;
if (q == x)
return true;
}
В вашем случае даже лучше: не пишите l oop самостоятельно, используйте стандартный алгоритм (сравните http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res -lib ). Ваша функция может быть реализована с помощью std::find
.
return std::find(stariFinale.begin(), stariFinale.end(), q) != stariFinale.end();