用二元搜尋樹實作出來的,算是以set為主的類型
能用的功能有迭代器、內容修改,但並非和序列容器一樣
iterator begin(); // 傳回指向第一個元素的迭代器內容修改 swap, clear, insert, erase
iterator end(); // 傳回指向最後一個元素!!之後!!的迭代器
reverse_iterator rbegin(); // 傳回指向!!倒數!!第一個元素的迭代器
reverse_iterator rend(); // 傳回指向第一個元素!!之前!!的迭代器
// 和另一個同類型的容器交換內容
void swap (container& x);
// 清空容器
void clear();
// 在$position前插入值為$value的元素,但不一定會真的插在那個位置
// 回傳插入的位置,不一定是$position
// 如果位置選好的話,插入速度為常數
iterator insert (iterator position, Type value);
// 在容器內插入一排內容// 範圍是 [ $first , $last )
// InputIterator 可以是跟此容器相同或不同類別的迭代器,
// 但兩個容器儲存的類型要一樣
template <class InputIterator>void insert (InputIterator first, InputIterator last);
// 刪除$position所指向的元素
// (C++11)回傳指向下一個元素的迭代器
void erase (iterator position);
// 刪除範圍是 [ $first , $last )的元素
// (C++11)回傳指向下一個元素的迭代器 (就是$last)
void erase (iterator first, iterator last);
離散數學教的集合,可以用來過濾重複元素,還會自動排序(大到小)。
為了符合集合的定義,它會自動將內部元素轉為const型態,以防止使用者亂修改。
// 在容器內找出指向 值為$value的元素 的迭代器,
// 若找不到回傳this.end()
iterator find (Type value);
// 在容器內找出 值為$value的元素 的數量。(1 or 0)
// 在set中沒什麼明顯作用
size_t count(Type value);
// 在容器內插入一個值為$value的元素
// 若此元素插入前已存在,傳回 <該元素的位置 ,false>
// 若此元素插入前不存在,傳回 <插入後該元素的位置,true>
pair<iterator,bool> insert (Type value);
// 刪除與value相等的元素
// 回傳刪除的數量(1 or 0)
// 在set中沒什麼明顯作用
size_t erase (Type value);
Type == <Key, Value>
離散數學教的函數,一對一、一對多
跟C#的dictionary差不多
它和set很像。 map<K,V> 大概等於 set<pair<K,V>>
內容元素 pair<K,V>,一對key-value// 在容器內插入一個值為$p的元素// 傳回 key==$k的元素的 value的參考
// 若無此元素,插入 pair($k,default) 到容器中
Value& operator[] (Key k);
// 傳回 指向key==$k的元素 的迭代器
// 若找不到回傳this.end()iterator find (Key k);
// 在容器內的key找出此元素的數量。
size_t count(K key);
// 若此元素插入前已存在,傳回 <該元素的位置 ,false>
// 若此元素插入前不存在,傳回 <插入後該元素的位置,true>
pair<iterator,bool> insert (pair<K,V> p);
// 刪除key為$k的元素
// 回傳刪除的數量(1 or 0)
size_t erase (Key k);
跟set很像,差別在裡面的元素可以重複。
但它還是會自動將內部元素轉為const型態,以防止使用者亂修改。
// 在容器內找出指向 值為$value的元素 的第一個迭代器,
// 若找不到回傳this.end()
iterator find (Type value);
// 傳回所有 值為$value的元素 的迭代器
// 範圍 [pair.first , pair.second)
// 若找不到回傳this.end()
pair<iterator,iterator> equal_range (Type value);
// 在容器內找出 值為$value的元素 的數量。
size_t count(Type value);
// 在容器內插入一個值為$value的元素
// 若已存在,在那個元素後面插入
iterator insert (Type value);
// 刪除與value相等的元素
// 回傳刪除的數量
size_t erase (Type value);
跟map很像,差別在裡面的Key可以重複。
但它還是會自動將內部元素的Key轉為const型態,以防止使用者亂修改。// 在容器內插入一個值為$p的元素// 傳回 指向key==$k的元素 的第一個迭代器
// 若找不到回傳this.end()
iterator find (Key k);
// 傳回所有 指向key==$k的元素
// 範圍 [pair.first , pair.second)
// 若找不到回傳this.end()
pair<iterator,iterator> equal_range (Key k);
// 在容器內的key找出此元素的數量。
size_t count(K key);
// 若已存在,在那個元素後面插入
iterator insert (pair<K,V> p);
// 刪除key為$k的元素
// 回傳刪除的數量
size_t erase (Key k);