本文主要是介绍【STL】C++ STL之Multiset详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文介绍
multiset
内容,如有学习 STL 其他内容,可以访问下面的目录链接进行阅读。
C++ STL总结主目录
multiset
1. 介绍
multiset
容器中的元素满足特点:
- 元素从小到大排序
- 元素可以重复(不同于set中元素不能重复的特点)
记住最重要的区别,其他基本和
set
一样。
//头文件
#include<multiset>
//初始化定义
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(set<int>::iterator it = s.begin(); it != s.end(); it++)cout << *it << " ";
b.简便的方法
for(auto i : s)cout << i << endl;
c.访问最后一个元素
//第一种
cout << *s.rbegin() << endl;
//第二种
set<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;//按降序排列}
};
set<int, cmp> se;
注意:
multiset
介绍可能偏少,绝大部分使用方法基本都和set
一样,请参考set
。
这篇关于【STL】C++ STL之Multiset详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!