2.3 set


#include
レッドブラックツリー(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 << " ";