Я знаю, что std::list
итераторы are Equality Comparable (как двунаправленные итераторы). Теперь, следующий код четко определен и гарантированно печатает «равный»?Являются ли std :: list итераторами уникальными и постоянными?
std::list<int> nums = { 1, 2, 3 };
std::list<int>::iterator a = std::find(nums.begin(), nums.end(), 1);
nums.push_front(0);
std::list<int>::iterator b = std::find(nums.begin(), nums.end(), 1);
if (a == b) std::cout << "equal" << std::endl;
works for me Это, но это не значит, что это хорошо определено или гарантировано!
Другими словами, если вы найдете итератор для конкретной записи std::list
в разное время (возможно, с добавлением или удалением других элементов между ними), являются ли два итератора гарантированными равными?
Этот вопрос, в частности, касается итераторов std::list
(если это имеет значение), но ответ, который также охватывает другие контейнеры STL в целом, был бы отличным!