2.3 set
#include<set>
紅黑樹(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()。自定義比較函數:
兩種方式:
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 << " ";
總結
- 上一篇: 2.2 string
- 下一篇: 2.4 multiset