介绍
multiset
是一个封装红黑树 (自平衡二叉树) 的关联容器,其中元素依据其值自动排序且每个元素可出现任意次。
multiset
定义于头文件 <set>
中,其声明如下:
template<
class Key,
class Compare = std::less<Key>,
class Allocator = std::allocator<Key>
> class multiset;
multiset
容器是一个类
初始化
multiset
容器需要指定排序规则,有两种方式可指定:
- 元素类型重载小于号运算符。
strcut T { …… // 各种参数 // 该函数声明必须这样写 friend bool operator <(const T& a,const T& b) { // check(a,b)为 a < b 成立条件 return check(a,b) ? true : false; } };
- 以 类型参数 定义,需要定义一个 函数对象。如
set<T,greater<T> >
。struct Cmp { bool operator()(const T& a,const T& b) { // check(a,b)为 a < b 成立条件 return check(a,b) ? true : false; } }; class Cmp { public: bool operator()(const T& a,const T& b) { // check(a,b)为 a < b 成立条件 return check(a,b) ? true : false; } }; // 这两个 Cmp 是等价的 multiset<int,Cmp> s;
以下构造函数都不涉及定义排序规则,均采用默认排序规则——升序。
-
multiset<T> mst;
创建一个空的multiset
容器。