Два итератора карты, указывающие на один и тот же элемент, гарантированно равны?

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

map<T1,T2> m;
//populate m
auto ret_pair = m.insert({o1,o2}); //o1,o2 objects of types T1,T2

auto end = m.cend();
--end;
if (ret_pair.first != end) //<-- this worries me
throw runtime_error("boom");

Строка, где я сравниваю два итератора, меня беспокоит, потому что я не уверен, могу ли я рассчитывать на то, что эти разные итераторы будут одинаковыми, даже если они указывают на одно и то же.

Как вы думаете? Почему это (не) работает?

1

Решение

Итераторы, которые указывают на один и тот же элемент, сравнивают равными. Если бы они этого не сделали, каждый алгоритм в стандартной библиотеке сломался бы.

Так что да, ваш код в порядке.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]