multiset
multiset是容器,它按照特定顺序存储元素,并且多个元素可以具有相同的值。
在一个multiset中,一个元素的值也标识了它(这个值本身就是类型T的关键)。一个multiset中的元素的值不能在容器中修改(元素总是const),但是可以从容器中插入或移除它们。 在内部,multiset中的元素总是按照其内部比较对象(比较类型)指示的严格弱排序标准排序。
multiset容器通常比unordered_multiset容器慢,以通过它们的键访问各个元素,但它们允许基于它们的顺序对子集进行直接迭代。通常被实现为二叉搜索树。
容器属性
Associative:关联容器中的元素由它们的键引用,而不是它们在容器中的绝对位置。
Ordered:容器中的元素始终遵循严格的顺序。所有插入的元素都按这个顺序排列。
Set:元素的值也是识别它的关键。
Multiple equivalent keys:容器中的多个元素可以具有相同的键。
Allocator-aware:容器使用分配器对象来动态处理其存储需求。
操作 效果
count (elem) 返回元素值为elem的个数
find(elem) 返回元素值为elem的第一个元素,如果没有返回end()
lower _bound(elem) 返回元素值为elem的第一个可安插位置,
也就是元素值 >= elem的第一个元素位置
upper _bound (elem) 返回元素值为elem的最后一个可安插位置,
也就是元素值 > elem 的第一个元素位置
equal_range (elem) 返回elem可安插的第一个位置和最后一个位置,
也就是元素值==elem的区间
c.insert(elem) 插入一个elem副本,返回新元素位置,无论插入成功与否。
c.insert(pos, elem) 安插一个elem元素副本,返回新元素位置,pos为收索起点,
提升插入速度。
c.insert(beg,end) 将区间[beg,end)所有的元素安插到c,无返回值。
c.erase(elem) 删除与elem相等的所有元素,返回被移除的元素个数。
c.erase(pos) 移除迭代器pos所指位置元素,无返回值。
c.erase(beg,end) 移除区间[beg,end)所有元素,无返回值。
c.clear() 移除所有元素,将容器清空