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");

2つのイテレータを比較する行は、同じことを指していても、これらの異なるイテレータが同じであると信頼できるかどうかわからないため、心配です。

どう思いますか?なぜこれは(機能しない)機能するのでしょうか?

4

1 に答える 1

3

同じ要素を指す反復子は等しいと比較されます。そうしないと、標準ライブラリのすべてのアルゴリズムが機能しなくなります。

はい、あなたのコードは問題ありません。

于 2012-12-10T19:25:58.287 に答える