メモ帳がわり

個人的なメモを残します。主に競プロ

【C++】set, multisetに関するメモ

適当に追加していきます。

最大値の取り方

set<int> st;
st.insert(1);
st.insert(2);
auto mx = st.rbegin(); // 最大値へのイテレータ
cout << *mx << endl; // 2
st.erase(mx); // 最大値を削除する
cout << *mx << endl; // 1

multisetで一つだけ要素を消去する

eraseにイテレータを渡すと一つだけ削除できます。
↓最大値を削除する

multiset<int> st;
auto iter = st.rbegin();
st.erase(iter);

値を指定したい場合はfindを挟んでイテレータへ変換します。

multiset<int> st;
int a = 10;
// aを消去する
st.erase(st.find(a));