C++set 和 multiset的使用
2024-10-06 11:31:56
最后一个自由支配的暑假,学一些自己感兴趣的部分,也算为大三作准备。
C++中set集合的使用
定义一个int类型的集合
set<int> s;
set<int>::iterator it;
基本操作有如下:
s.inert(10);//插入元素10
s.erase(10);//删除元素10
s.clear();//清空集合
s.size();//集合元素的个数
s.empty();//判断集合是否为空
it=s.find(10);//查找集合中是否有元素10,有的话返回10,没有返回s.end();
首先集合在数学的概念中就是互异性,不能有重复
需要注意的点:
1.是以中序遍历去遍历整个集合的,在插入的时候自动调整
2.遍历的时候需要判断一下集合是否为空;
3.插入的数默认从小到大排序 set<int>::iterator it;
4.如果要从大到小的话 set<int>::reverse_iterator rit;
for(rit=s.rbegin();rit!=s.rend();rit++)
{
cout<<*rit<<" ";
}
自定义比较函数,用到结构体
#include<set> #include<string> #include<iostream> using namespace std; struct Info { string name; float score; //重载 '<'操作符 bool operator < (const Info &a)const { //按照score从小到大排序 换为‘<’则为从大到小 return a.score>score; } }; int main() { set<Info> s; Info info; info.name="Jack"; info.score=; s.insert(info); info.name="Tom"; info.score=; s.insert(info); info.name="Nacy"; info.score=; s.insert(info); info.name="Elano"; info.score=; s.insert(info); set<Info>::iterator it; for(it=s.begin();it!=s.end();it++) cout<<(*it).name<<" : "<<(*it).score<<endl; return ; }
结果:
mutiset:多重集合 和set最大的区别就是,它可以插入重复的元素,
如果删除的话,相同的也一起删除了;
如果查找的话,返回该元素的迭代器的位置,若有相同,返回第一个元素的地址;
其他使用和set基本类似。
#include<set>
#include<string>
#include<iostream>
using namespace std;
int main()
{
//多重集合对象
multiset<string> ms;
ms.insert("abc");
ms.insert("");
ms.insert("") ;
ms.insert("aaa");
ms.insert("");
ms.insert("bbb"); multiset<string>::iterator it;
for(it=ms.begin();it!=ms.end();it++)
{
cout<<*it<<endl;
}
cout<<endl<<"集合的大小:"<<ms.size()<<endl; it=ms.find("");
if(it!=ms.end())
{
cout<<*it<<endl;
}
else cout<<"not found"<<endl; it=ms.find("");
if(it!=ms.end())
{
cout<<*it<<endl;
}
else cout<<"not found"<<endl; int n=ms.erase("");
cout<<"共删除:"<<n<<endl<<endl;
for(it=ms.begin();it!=ms.end();it++)
{
cout<<*it<<endl;
}
return ;
}
最新文章
- angular
- 【笔记】memorymanagement-whitepaper-150215
- 编写一个Car类,具有String类型的属性品牌,具有功能drive; 定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; 定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特 性。
- C# 操作pem 文件
- 40页PPT勾画“互联网颠覆性思维”----诠释互联网思维
- UVA 796 Critical Links(Tarjan求桥)
- Jquery表单提交方式
- Track files and folders manipulation in Windows
- Swift 面向对象
- 用JAVA捕获屏幕、屏幕录像、播放
- Unity 游戏框架搭建 (三) MonoBehaviour单例的模板
- linux 中nvme 的中断申请及处理
- loj#6074. 「2017 山东一轮集训 Day6」子序列(矩阵乘法 dp)
- (54)Wangdao.com第七天_JavaScript 运算符
- c语言#define用法
- Sublime使用及配置C编译器
- java中对类中成员的排序
- 各个系统下ping IP+端口的方法
- (通用版)salesforce中soql及sosl的伪‘Like’模糊检索
- 免费代理IP地址列表