найти функцию в c ++ <algorithm> - PullRequest
1 голос
/ 12 июня 2019

Я использую g ++ 7.4.0 в Ubuntu 18.04.2 LTS

Мне кажется, я нашел ошибку:

vector<int> a(10,1);
vector<int>::iterator it = find(a.begin()+6,a.begin()+3,8);
if(it != a.end()) cout<<"FOUND"<<endl;

Результат:

FOUND

Это должно быть не найдено?Я также обнаружил, что:

it = a.begin()+3

1 Ответ

1 голос
/ 12 июня 2019

Нет, это не ошибка. Он полностью следует стандартному определению:

С [alg.find]

Пусть E будет:
& # X2014; *i == value для find,
...

Возвращает : первый итератор i в диапазоне [first, last), для которого E равен true. Возвращает last, если такой итератор не найден.

Поскольку в диапазоне [a.begin()+6, a.begin()+3) нет итератора i), для которого *i == 8 выполняется, std::find возвращает a.begin()+3.

...