最后一个自由支配的暑假,学一些自己感兴趣的部分,也算为大三作准备。

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 ;
}

最新文章

  1. angular
  2. 【笔记】memorymanagement-whitepaper-150215
  3. 编写一个Car类,具有String类型的属性品牌,具有功能drive; 定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; 定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特 性。
  4. C# 操作pem 文件
  5. 40页PPT勾画“互联网颠覆性思维”----诠释互联网思维
  6. UVA 796 Critical Links(Tarjan求桥)
  7. Jquery表单提交方式
  8. Track files and folders manipulation in Windows
  9. Swift 面向对象
  10. 用JAVA捕获屏幕、屏幕录像、播放
  11. Unity 游戏框架搭建 (三) MonoBehaviour单例的模板
  12. linux 中nvme 的中断申请及处理
  13. loj#6074. 「2017 山东一轮集训 Day6」子序列(矩阵乘法 dp)
  14. (54)Wangdao.com第七天_JavaScript 运算符
  15. c语言#define用法
  16. Sublime使用及配置C编译器
  17. java中对类中成员的排序
  18. 各个系统下ping IP+端口的方法
  19. (通用版)salesforce中soql及sosl的伪‘Like’模糊检索
  20. 免费代理IP地址列表

热门文章

  1. 共价大爷游长沙 lct 维护子树信息
  2. hdu 4734 F(x)(数位dp+优化)
  3. [HNOI2002]沙漠寻宝 题解
  4. asp net core mvc 跨域ajax解决方案
  5. CM &amp; CDH 基本概念
  6. d3.js 制作简单的俄罗斯方块
  7. Springboot2.x 自动创建表并且执行初始化数据
  8. Winform中使用DevExpress时给控件添加子控件的方法
  9. Spring+Mybatis整合的练手小项目(一)项目部署
  10. AD 域服务简介(二)- Java 获取 AD 域用户