次を使用して、マルチセットの最後の要素を消去しようとしています:
minheap.erase(minheap.rbegin());
コンパイルされず、4 ~ 5 個のエラーが発生します。
C++ マルチセットでは.end()
、最後の要素ではなく、最後の要素の次を指すことに注意してください。
何か案は?
編集:
これが異なる数値を提供しているのはなぜですか?
multiset <int>::reverse_iterator it1 = minheap.rbegin();
m1=*(++it1);
multiset <int>::iterator it2 = minheap.end();
m2=*(--it2);