2.3 set
#include
レッドブラックツリー(Red-Black Tree)、バランス二叉検索ツリー.
同じキー値を挿入した場合は無視します.
setは主に高速検索に用いられる
効率的な挿入と削除
Multiset,map,multimapはいずれもバランス二叉検索ツリーである.
setコレクションを作成するには:
要素の挿入と中順の遍歴:
要素の逆ループ:
要素の削除:
反復位置の要素、キー値に等しい要素、区間の要素を削除できます.
クリアコレクション
要素の取得:
カスタム比較関数:
2つの方法:
1、要素が構造体であれば、オペレータ'<'を直接再ロードする.
2、要素が基本要素である場合、構造体を構築し、中に'()'オペレータを再ロードし、論理コードは比較機能を実現する.
レッドブラックツリー(Red-Black Tree)、バランス二叉検索ツリー.
同じキー値を挿入した場合は無視します.
setは主に高速検索に用いられる
効率的な挿入と削除
Multiset,map,multimapはいずれもバランス二叉検索ツリーである.
setコレクションを作成するには:
set<int> s;
要素の挿入と中順の遍歴:
s.insert(3);
for(set<int>::iterator it = s.begin(); it != s.end(); ++it)
cout << *it << " ";
要素の逆ループ:
for(set<int>::reverse_iterator rit = s.rbegin(); rit != s.rend(); ++rit)
cout << *rit << " ";
要素の削除:
反復位置の要素、キー値に等しい要素、区間の要素を削除できます.
s.erase(4); // 4
クリアコレクション
s.clear();
要素の取得:
set<int>::iterator it = s.find(3); // , ; , end()。
カスタム比較関数:
2つの方法:
1、要素が構造体であれば、オペレータ'<'を直接再ロードする.
2、要素が基本要素である場合、構造体を構築し、中に'()'オペレータを再ロードし、論理コードは比較機能を実現する.
struct desComp
{
bool operator()(const int &a, const int &b)
{
if (a != b) return a > b;
else return a > b;
}
}
set<int, desComp>s;
s.insert(3);
... ...
for (set<int, desComp>::iterator it = s.begin(); it != s.end(); ++it)
cout << *it << " ";