multiset
multiset是容器刨肃,它按照特定順序存儲元素拖叙,并且多個元素可以具有相同的值紊撕。
在一個multiset中黑滴,一個元素的值也標(biāo)識了它(這個值本身就是類型T的關(guān)鍵)憨募。一個multiset中的元素的值不能在容器中修改(元素總是const),但是可以從容器中插入或移除它們袁辈。?在內(nèi)部菜谣,multiset中的元素總是按照其內(nèi)部比較對象(比較類型)指示的嚴(yán)格弱排序標(biāo)準(zhǔn)排序。
multiset容器通常比unordered_multiset容器慢,以通過它們的鍵訪問各個元素尾膊,但它們允許基于它們的順序?qū)ψ蛹M(jìn)行直接迭代甘磨。通常被實現(xiàn)為二叉搜索樹。
容器屬性
Associative:關(guān)聯(lián)容器中的元素由它們的鍵引用眯停,而不是它們在容器中的絕對位置济舆。
Ordered:容器中的元素始終遵循嚴(yán)格的順序。所有插入的元素都按這個順序排列莺债。
Set:元素的值也是識別它的關(guān)鍵滋觉。
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為收索起點(diǎn)术健,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 提升插入速度。
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() ? ? ? ? ? ? ? ? ? ? ? ? ? ? 移除所有元素,將容器清空