multiset
multiset是容器,它按照特定順序存儲元素,并且多個元素可以具有相同的值。
在一個multiset中,一個元素的值也標識了它(這個值本身就是類型T的關鍵)。一個multiset中的元素的值不能在容器中修改(元素總是const),但是可以從容器中插入或移除它們。?在內(nèi)部,multiset中的元素總是按照其內(nèi)部比較對象(比較類型)指示的嚴格弱排序標準排序。
multiset容器通常比unordered_multiset容器慢,以通過它們的鍵訪問各個元素,但它們允許基于它們的順序?qū)ψ蛹M行直接迭代。通常被實現(xiàn)為二叉搜索樹。
容器屬性
Associative:關聯(lián)容器中的元素由它們的鍵引用,而不是它們在容器中的絕對位置。
Ordered:容器中的元素始終遵循嚴格的順序。所有插入的元素都按這個順序排列。
Set:元素的值也是識別它的關鍵。
Multiple equivalent keys:容器中的多個元素可以具有相同的鍵。
Allocator-aware:容器使用分配器對象來動態(tài)處理其存儲需求。
操作 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?效果
count (elem) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回元素值為elem的個數(shù)
find(elem) ? ? ? ? ? ? ? ? ? ? ? ? ? 返回元素值為elem的第一個元素,如果沒有返回end()
lower _bound(elem) ? ? ? ? ? 返回元素值為elem的第一個可安插位置,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?也就是元素值 >= elem的第一個元素位置
upper _bound (elem) ? ? ? ? 返回元素值為elem的最后一個可安插位置,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 也就是元素值 > elem 的第一個元素位置
equal_range (elem) ? ? ? ? ? 返回elem可安插的第一個位置和最后一個位置,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 也就是元素值==elem的區(qū)間
c.insert(elem) ? ? ? ? ? ? ? ? ? ?插入一個elem副本,返回新元素位置,無論插入成功與否。
c.insert(pos, elem) ? ? ? ? ? ?安插一個elem元素副本,返回新元素位置,pos為收索起點,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 提升插入速度。
c.insert(beg,end) ? ? ? ? ? ? ? 將區(qū)間[beg,end)所有的元素安插到c,無返回值。
c.erase(elem) ? ? ? ? ? ? ? ? ? ?刪除與elem相等的所有元素,返回被移除的元素個數(shù)。
c.erase(pos) ? ? ? ? ? ? ? ? ? ? ?移除迭代器pos所指位置元素,無返回值。
c.erase(beg,end) ? ? ? ? ? ? ? 移除區(qū)間[beg,end)所有元素,無返回值。
c.clear() ? ? ? ? ? ? ? ? ? ? ? ? ? ? 移除所有元素,將容器清空