10/05/13 00:29 lRGIuUIg
お願いします。
【板名】プログラム【スレ名】C++相談室
【スレのURL】 スレリンク(tech板)
【名前欄】【メール欄】sage
【本文】multiset<int> ms;
ms.insert(3);ms.insert(2);ms.insert(4);
ms.insert(4);ms.insert(1);ms.insert(5);
としたとき、【A】multisetの中の一番小さいもの
&二番目に小さいもの(1,2)を取得し削除する処理と
同様に、【B】multisetの中の一番大きいもの
&二番目に大きいもの(5,4)を取得し削除する処理を書きたいです。
multiset<int>::iterator it = ms.begin();
int one = *it; ms.erase(it++);
int two = *it; ms.erase(it);
処理Aは以上のコードで可能なのですが、処理Bができません。
multiset<int>::reverse_iterator it = ms.rbegin(); とすると
ms.erase(it++); ができませんし、
multiset<int, std::greater<int>> ms; はエラーでコンパイルできません。
なにか上手な方法はありませんか?環境はVC++2010です。