【STL】C++ STL之Multiset详解

本文介绍 multiset 内容,如有学习 STL 其他内容,可以访问下面的目录链接进行阅读。

C++ STL总结主目录

multiset

1. 介绍

multiset容器中的元素满足特点:

  • 元素从小到大排序
  • 元素可以重复(不同于set中元素不能重复的特点)

记住最重要的区别,其他基本和 set 一样。

//头文件
#include
//初始化定义
multiset<int> s;

2. 函数方法

代码 含义
s.begin() 返回set容器的第一个元素的地址(迭代器)
s.end() 返回set容器的最后一个元素的地址(迭代器)
s.rbegin() 返回逆序迭代器,指向容器元素最后一个位置
s.rend() 返回逆序迭代器,指向容器第一个元素前面的位置
s.clear() 删除set容器中的所有的元素,返回unsigned int类型 O ( N ) O(N) O(N)
s.empty() 判断set容器是否为空
s.insert() 插入一个元素 O ( N l o g N ) O(NlogN) O(NlogN)
s.size() 返回当前set容器中的元素个数 O ( 1 ) O(1) O(1)
erase(iterator) 删除定位器iterator指向的值
erase(first,second) 删除定位器first和second之间的值
erase(key_value) 删除键值key_value的值 O ( N l o g N ) O(NlogN) O(NlogN)
查找
s.find(元素) 查找set中的某一元素,有则返回该元素对应的迭代器,无则返回结束迭代器
s.lower_bound(k) 返回大于等于k的第一个元素的迭代器
s.upper_bound(k) 返回大于k的第一个元素的迭代器

3. 访问

a.迭代器访问

for(multiset<int>::iterator it = s.begin(); it != s.end(); it++)
	cout << *it << " ";

b.简便的方法

for(auto i : s)
	cout << i << endl;

c.访问最后一个元素

//第一种
cout << *s.rbegin() << endl;
 //第二种
multiset<int>::iterator iter = s.end();
iter--;
cout << (*iter) << endl; //打印2;
//第三种
cout << *(--s.end()) << endl;

4. 自定义排序

  • 方式一
//重载 < 运算符
struct cmp {
    bool operator () (const int& u, const int& v) const {
       // return 返回条件
        return u > v;//按降序排列
    }
};
multiset<int, cmp> se;

注意:multiset 介绍可能偏少,绝大部分使用方法基本都和 set 一样,请参考 set

你可能感兴趣的:(stl,c++)