网易云课堂(Boolan)C++ 第六周笔记

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()                             移除所有元素,将容器清空

你可能感兴趣的:(网易云课堂(Boolan)C++ 第六周笔记)