1

我有一个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");

我比较两个迭代器的那一行让我担心,因为我不确定我是否可以依赖这些不同的迭代器是相同的,即使指向同一个东西。

你怎么看?为什么这(不)行得通?

4

1 回答 1

3

指向相同元素的迭代器比较相等。如果他们不这样做,标准库中的每个算法都会崩溃。

所以是的,你的代码很好。

于 2012-12-10T19:25:58.287 回答