当前位置: 首页 > news >正文

set(集合),multiset容器及pair队组的创建

1.set的基本概念:所有元素再插入时自动按升序排序,set/multiset属于关联式容器,底层结构是用二叉树实现的

set与multiset区别:

set中不允许容器中有重复的元素

multiset允许容器中有重复的元素

2.set的构造函数

 3.set的大小和交换

4.set的插入和删除操作

 5.set的查找和统计

void test01()
{set<int> s;s.insert(10);s.insert(40);s.insert(20);s.insert(50);s.insert(20);s.insert(20);set<int>::iterator it=s.find(200);//find的返回值是迭代器,没找到返回s.end()if (it != s.end()){cout << "找到元素" << *it << endl;}else{cout << "没找到元素" << endl;}int num = s.count(20);//对于set而言没有重复元素,只返回0和1cout << num << endl;
}

 6.set不能插入重复元素multiset能插入重复元素的原因

set插入数据的同时会返回插入结果,表示插入成功

multiset不会检测数据,因此可以插入重复数据

set.insert的底层代码:返回值是pair对组类型

multiset.insert的底层代码:返回值是迭代器

 7.pair队组的创建

 第一个元素first,第二个元素second

void test01()
{pair<string, int> p1("张三", 16);cout << "姓名:" << p1.first << " 年龄:" << p1.second << endl;pair<string, int> p2 = make_pair("李四", 15);cout << "姓名:" << p2.first << " 年龄:" << p2.second << endl;
}

8.set容器的排序(利用仿函数可以改变排序规则)

set存放内置数据类型排序

class mycompare
{
public://仿函数bool  operator()(int v1, int v2)const//这里要加const{return v1 > v2;//降序}
};
void test01()
{set<int> s1;s1.insert(20);s1.insert(50);s1.insert(30);s1.insert(10);s1.insert(40);for (set<int>::iterator it = s1.begin(); it != s1.end(); it++)//默认升序打印{cout << *it << " ";}cout << endl;set<int,mycompare> s2;//指定排序规则,两个参数都是数据类型//利用类里的仿函数可以指定排序规则s2.insert(20);s2.insert(50);s2.insert(30);s2.insert(10);s2.insert(40);for (set<int,mycompare>::iterator it = s2.begin(); it != s2.end(); it++)//降序打印{cout << *it << " ";}
}

set存放自定义数据类型排序

自定义类型都会指定排序规则

class Person
{
public:Person(string name,int age){this->m_name = name;this->m_age = age;}string m_name;int m_age;
};
class mycompare
{
public:bool  operator()(const Person &p1,const Person &p2)const//这里要加const{return p1.m_age>p2.m_age;//降序}
};
void test01()
{set<Person,mycompare> s1;Person p1("张三", 16);//如果年龄相同还要制定另一套规则Person p2("李四", 18);Person p3("王五", 15);Person p4("赵六", 14);s1.insert(p1);s1.insert(p2);s1.insert(p3);s1.insert(p4);for (set<Person,mycompare>::iterator it = s1.begin(); it != s1.end(); it++)//对于自定义数据类型,指定排序规则打印{cout << "姓名:" << it->m_name << " 年龄:" << it->m_age << endl;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java语言程序设计基础篇_编程练习题**15.28(显示一个转动的风扇)
  • 【Linux】进程IO|重定向|缓冲区|dup2|dup|用户级缓冲区|模拟缓冲区
  • leetcode 69. x 的平方根
  • C++里memset的使用
  • Oracle 文件管理-参数文件、控制文件、归档
  • Java语言程序设计——篇九(3)
  • AspectJWeaver反序列化
  • 数据结构经典测试题4
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 二叉树的广度搜索(200分) - 三语言AC题解(Python/Java/Cpp)
  • RabbitMq手动ack的超简单案例+Confirm和Return机制的配置和使用
  • 测试面试宝典(三十三)—— 接口测试有没有测试出什么问题?
  • 二分类、多分类、多标签分类的评价指标
  • 家具购物小程序的设计
  • (源码分析)springsecurity认证授权
  • 简单三步,帮你的照片重现高清,一键拯救摄影废片!
  • [PHP内核探索]PHP中的哈希表
  • centos安装java运行环境jdk+tomcat
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • python 学习笔记 - Queue Pipes,进程间通讯
  • 创建一个Struts2项目maven 方式
  • 离散点最小(凸)包围边界查找
  • 那些年我们用过的显示性能指标
  • 使用API自动生成工具优化前端工作流
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 我看到的前端
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​Spring Boot 分片上传文件
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)kafka实战——kafka源码编译启动
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)shell调试方法
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • **CI中自动类加载的用法总结
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET MVC第五章、模型绑定获取表单数据
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 回调、接口回调、 委托
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [20150707]外部表与rowid.txt
  • [C/C++入门][ifelse]20、闰年判断
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk --不会编程的崽
  • [CISCN2019 华东南赛区]Web111
  • [IE编程] WebBrowser控件中设置页面的缩放
  • [ios]准备好app后使用xcode发布ios操作