是否有两个映射迭代器指向同一项保证相等?

时间:2012-12-10 19:23:42

标签: c++ iterator standard-library

我有一个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 个答案:

答案 0 :(得分:3)

指向同一元素的迭代器比较相等。如果没有,标准库中的每个算法都会中断。

是的,你的代码很好。