类模板
<set>

std::multiset

template < class T,                        // multiset::key_type/value_type           class Compare = less<T>,        // multiset::key_compare/value_compare           class Alloc = allocator<T> >    // multiset::allocator_type           > class multiset;
Multiple-key set
Multisets are containers that store elements following a specific order, and where multiple elements can have equivalent values.

multiset, the value of an element also identifies it (the value is itself the key, of typeT). The value of the elements in amultisetcannot be modified once in the container (the elements are always const), but they can be inserted or removed from the container.

在内部,multisetare always sorted following a specific strict weak ordering criterion indicated by its internal comparison object (of typeCompare).

multisetcontainers are generally slower than unordered_multiset containers to access individual elements by their key, but they allow the direct iteration on subsets based on their order.

Multisets are typically implemented as binary search trees.

容器属性

关联容器
关联容器中的元素由其引用,而不是由其在容器中的绝对位置引用。
有序的
容器中的元素始终遵循严格的顺序。所有插入的元素都会在此顺序中获得一个位置。
集合 (Set)
元素的值也是用于标识它的
多个等效键
Multiple elements in the container can have equivalent keys.
感知分配器
容器使用分配器对象来动态处理其存储需求。

模板参数

T
Type of the elements. Each element in amultisetcontainer is also identified by this value (each value is itself also the element's key).
别名为成员类型multiset::key_typemultiset::value_type.
Compare
一个二元谓词,它接受两个与元素类型相同的参数并返回一个bool值。表达式comp(a,b),其中 comp 是此类型的对象,ab 是键值,如果 a 在该函数定义的严格弱序中被认为在 b 之前,则应返回true
要放回的字符的multiset对象使用此表达式来确定元素在容器中遵循的顺序以及两个元素键是否等效(通过自反比较它们:如果!comp(a,b) && !comp(b,a)).
This can be a function pointer or a function object (see constructor for an example). This defaults toless<T>,其返回结果与应用小于运算符 (a<b).
别名为成员类型multiset::key_comparemultiset::value_compare.
Alloc
用于定义存储分配模型的分配器对象类型。默认情况下,使用 allocator 类模板,它定义了最简单的内存分配模型并且与值无关。
别名为成员类型multiset::allocator_type.

成员类型

成员类型定义说明
key_type第一个模板参数 (T)
value_type第一个模板参数 (T)
key_compare第二个模板参数 (Compare)默认为less<key_type>
value_compare第二个模板参数 (Compare)默认为less<value_type>
allocator_type第三个模板参数 (Alloc)默认为allocator<value_type>
引用allocator_type::reference对于默认的 allocatorvalue_type&
const_referenceallocator_type::const_reference对于默认的 allocatorconst value_type&
指针allocator_type::pointer对于默认的 allocatorvalue_type*
const_pointerallocator_type::const_pointer对于默认的 allocatorconst value_type*
iterator指向value_type随机访问迭代器,可转换为const_iterator
const_iterator指向const value_type
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
difference_type一个有符号整数类型,与iterator_traits<iterator>::difference_type相同,通常与 ptrdiff_t 一样
size_type一个可以表示任何非负值的difference_type的无符号整数类型,通常与 size_t 一样
成员类型定义说明
key_type第一个模板参数 (T)
value_type第一个模板参数 (T)
key_compare第二个模板参数 (Compare)默认为less<key_type>
value_compare第二个模板参数 (Compare)默认为less<value_type>
allocator_type第三个模板参数 (Alloc)默认为allocator<value_type>
引用value_type&
const_referenceconst value_type&
指针allocator_traits<allocator_type>::pointer对于默认的 allocatorvalue_type*
const_pointerallocator_traits<allocator_type>::const_pointer对于默认的 allocatorconst value_type*
iterator指向const value_type* 可转换为const_iterator
const_iterator指向const value_type*
reverse_iteratorreverse_iterator<iterator>*
const_reverse_iteratorreverse_iterator<const_iterator>*
difference_type一个有符号整数类型,与
iterator_traits<iterator>::difference_type
相同,通常与 ptrdiff_t 一样
size_type一个可以表示任何非负值的difference_type的无符号整数类型,通常与 size_t 一样
*Note: All iterators in a multiset point to const elements. Whether theconst_成员类型是否与其非const_对应项是同一类型取决于具体的库实现,但程序不应依赖于它们的不同来重载函数const_iterator更通用,因为iterator总是可以转换为它。

成员函数


迭代器:

容量:

修改器:

观察器:

操作:

分配器: