連想コンテナのerase STLの連想コンテナ(map/multimap/set/multiset)のeraseの返し値は、C++標準ではvoidである。これは、削除した次の要素の先頭を返すiteratorを実装するとパフォーマンスに問題があるとしたC++標準の見解を示すものであるが、STL実装者の間では、それはないだろうという意見が大半を占めている(⇒EffectiveSTL.第5項。やねうらおもそう思う)ので、VC++6/VC++.NETの実装はiteratorを返す実装となっている。 ※ ちなみに、シーケンス(deque/list/vector)では削除した要素の次の要素を指すイテレータを返す。 STLPortのような標準にきっちり準拠しているお利口ちゃんの実装系に移植するときに問題となる。iteratorを返してくれないので、削除した次の要素はどれだかわからない。仕方ないので