一、前言
multiset 容器和 set 容器惟一的差异在于:multiset 容器容许存储多个值雷同的元素,而 set 容器中只能存储互不雷同的元素。
multiset 容器类模板定义:
template < class T, // 存储元素的类型
class Compare = less<T>, // 指定容器外部的排序规定
class Alloc = allocator<T> > // 指定分配器对象的类型
> class multiset;
multiset 类模板有 3 个参数,其中后 2 个参数自带有默认值。在理论应用中,咱们最多只须要应用前 2 个参数即可,第 3 个参数不会用到。
二、创立 multiset 容器
multiset 类模板提供的构造函数,和 set 类模板中提供创立 set 容器的构造函数,是完全相同的。因而创立 set 容器的形式实用于创立 multiset 容器。具体的办法参考 set 容器:https://segmentfault.com/a/11…
三、办法
办法 | 阐明 |
---|---|
begin() | 返回指向容器中第一个(留神,是已排好序的第一个)元素的双向迭代器。如果 multiset 容器用 const 限定,则该办法返回的是 const 类型的双向迭代器 |
end() | 返回指向容器最初一个元素(留神,是已排好序的最初一个)所在位置后一个地位的双向迭代器,通常和 begin() 联合应用。如果 multiset 容器用 const 限定,则该办法返回的是 const 类型的双向迭代器 |
rbegin() | 返回指向最初一个(留神,是已排好序的最初一个)元素的反向双向迭代器。如果 multiset 容器用 const 限定,则该办法返回的是 const 类型的反向双向迭代器。 |
rend() | 返回指向第一个(留神,是已排好序的第一个)元素所在位置前一个地位的反向双向迭代器。如果 multiset 容器用 const 限定,则该办法返回的是 const 类型的反向双向迭代器。 |
cbegin() | 和 begin() 性能雷同,只不过在其根底上,减少了 const 属性,不能用于批改容器内存储的元素值 |
cend() | 和 end() 性能雷同,只不过在其根底上,减少了 const 属性,不能用于批改容器内存储的元素值。 |
crbegin() | 和 rbegin() 性能雷同,只不过在其根底上,减少了 const 属性,不能用于批改容器内存储的元素值 |
crend() | 和 rend() 性能雷同,只不过在其根底上,减少了 const 属性,不能用于批改容器内存储的元素值 |
find(val) | 在 multiset 容器中查找值为 val 的元素,如果胜利找到,则返回指向该元素的双向迭代器;反之,则返回和 end() 办法一样的迭代器。另外,如果 multiset 容器用 const 限定,则该办法返回的是 const 类型的双向迭代器 |
lower_bound(val) | 返回一个指向以后 multiset 容器中第一个小于或等于 val 的元素的双向迭代器。如果 multiset 容器用 const 限定,则该办法返回的是 const 类型的双向迭代器 |
upper_bound(val) | 返回一个指向以后 multiset 容器中第一个大于 val 的元素的迭代器。如果 multiset 容器用 const 限定,则该办法返回的是 const 类型的双向迭代器 |
equal_range(val) | 该办法返回一个 pair 对象(蕴含 2 个双向迭代器),其中 pair.first 和 lower_bound() 办法的返回值等价,pair.second 和 upper_bound() 办法的返回值等价。也就是说,该办法将返回一个范畴,该范畴中蕴含所有值为 val 的元素 |
empty() | 若容器为空,则返回 true;否则 false |
size() | 返回以后 multiset 容器中存有元素的个数 |
max_size() | 返回 multiset 容器所能包容元素的最大个数,不同的操作系统,其返回值亦不雷同 |
insert() | 向 multiset 容器中插入元素 |
erase() | 删除 multiset 容器中存储的指定元素 |
swap() | 替换 2 个 multiset 容器中存储的所有元素。这意味着,操作的 2 个 multiset 容器的类型必须雷同 |
clear() | 清空 multiset 容器中所有的元素,即令 multiset 容器的 size() 为 0 |
emplace() | 在以后 multiset 容器中的指定地位间接结构新元素。其成果和 insert() 一样,但效率更高 |
emplace_hint() | 实质上和 emplace() 在 multiset 容器中结构新元素的形式是一样的,不同之处在于,使用者必须为该办法提供一个批示新元素生成地位的迭代器,并作为该办法的第一个参数 |
count(val) | 在以后 multiset 容器中,查找值为 val 的元素的个数,并返回 |
绝对于 set 容器,count()、find()、lower_bound()、upper_bound()、equal_range() 等办法更罕用于 multiset 容器。