Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

multiset

类模板   <set>
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;
多重集合

多重集合是按照特定顺序存储元素的容器,其中多个元素可以具有等效的值。

在multiset中,元素的值也标识它(该值本身就是键,类型为T)。 multiset中元素的值在容器中不能修改(元素总是const),但它们可以从容器中插入或删除。
在内部,多重集合中的元素总是按照其内部比较对象(Compare类型)指示的特定的严格弱排序标准排序。

在按照键值访问单个元素方面,Multiset容器通常比unordered_multiset容器慢, 但它们允许根据顺序对子集进行直接迭代。
多重集合通常被实现为二叉搜索树。

☲  容器特性


关联
关联容器中的元素是通过键引用的,而不是通过它们在容器中的绝对位置引用的。
有序
容器中的元素始终遵循严格的顺序。按此顺序给所有插入的元素一个位置。
固定
元素的值也是用来标识它的键。
多重
容器中的多个元素可以具有相同的键。
分配器
容器使用allocator对象动态地处理其存储需求。。

☲  模板参数


T
元素的类型。multiset容器中的每个元素也是由这个值标识的(每个值本身也是元素的键)。
成员类型 multiset::key_type 和 multiset::value_type 的别名.
Compare
一个二元谓词,它接受两个与元素类型相同的参数,并返回bool类型。 表达式comp(a,b),其中comp是该类型的对象,a和b是键值, 如果a被认为按照函数定义的严格弱排序在b之前,则返回true。
multiset对象使用这个表达式来确定元素在容器中遵循的顺序以及两个元素键是否相等 (通过条件反射比较它们:如果!comp(a,b) && !comp(b,a))它们是相等的)。
一个集合容器中没有两个元素是相等的。
这可以是一个函数指针或一个函数对象(参见构造函数的例子)。 默认为less<T>,它返回的结果与小于操作符(a<b)相同。
成员类型 multiset::key_compare 和 multiset::value_compare 的别名.
Alloc
用于定义存储分配模型的allocator对象的类型。 默认情况下, 使用allocator类模板,它定义了最简单的内存分配模型,并且是值独立的。
别名为成员类型 multiset::allocator_type.

☉  成员类型



C++98:
成员类型 定义 注释
key_type 起始模板参数(T)
value_type 起始模板参数(T)
key_compare 第二个模板参数(Compare) 默认为: less<key_type>
value_compare 第二个模板参数(Compare) 默认为: less<value_type>
allocator_type 第三个模板参数(Alloc) 默认为: allocator<value_type>
reference allocator_type::reference& 默认分配器: value_type&
const_reference allocator_type::const_reference 默认分配器: const value_type&
pointer allocator_type::pointer 默认分配器:value_type*
const_pointer allocator_type::const_pointer 默认分配器:const value_type*
iterator 一个访问value_type的双向迭代器 转换为const_iterator
const_iterator 指向const value_type的双向迭代器
reverse_iterator reverse_iterator<iterator>
const_reverse_iterator reverse_iterator<const_iterator>
difference_type 一种有符号整型,相当于: iterator_traits<iterator>::difference_type
通常与ptrdiff_t相同
size_type 无符号整型,可以表示任何difference_type的非负值 通常与size_t相同

☞ 成员函数



(constructor) multiset 构造函数 (公众成员函数)
(destructor) multiset 析构函数(公众成员函数)
operator= 复制容器内容(公众成员函数)

迭代器:
begin 返回一个指向multiset 开头的迭代器 (公众成员函数)
end 返回一个指向multiset末尾元素的下一个元素的迭代器 (公众成员函数)
rbegin 返回指向multiset 最后一个元素的反向迭代器 (公众成员函数)
rend 返回指向multiset 开始元素之前的理论元素的反向迭代器(公众成员函数)
cbegin 返回一个指向multiset 开头的常量迭代器 (公众成员函数)
cend 返回一个指向multiset 末尾元素的下一个元素的常量迭代器 (公众成员函数)
crbegin 返回指向multiset 最后一个元素的常量反向随机迭代器(公众成员函数)
crend 返回指向multiset 开始元素前一个元素的常量反向随机迭代器 (公众成员函数)
容量:
empty 测试容器是否为空 (公众成员函数)
size 返回大小 (公众成员函数)
max_size 返回最大元素个数(公众成员函数)
修改器:
insert 插入元素(公众成员函数)
erase 删除元素(公众成员函数)
swap 交换内容(公众成员函数)
clear 清除内容(公众成员函数)
emplace 构造和插入元素(公众成员函数)
emplace_hint 构造插入元素并加提示(公众成员函数)
查看:
key_comp 返回比较对象(公众成员函数)
value_comp 返回比较对象(公众成员函数)
操作:
find 获取元素迭代器(公众成员函数)
count 具有特定值的元素数量(公众成员函数)
lower_bound 返回迭代器下界(公众成员函数)
upper_bound 返回迭代器上界(公众成员函数)
equal_range 获取相等元素的范围(公众成员函数)
分配器:
get_allocator 获取配置器(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图