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

C++核心编程和桌面应用开发 第十七天(set和multiset容器 pair map和multimap容器)

目录

1.set和multiset容器

1.1构造和赋值

1.2交换和大小

1.3插入和删除

1.4统计和查找

1.5pair对组

1.6set和multiset的区别

1.7指定内置数据类型排序规则

1.8指定自定义数据类型排序规则

2.map和multimap容器

2.1构造和赋值

2.2交换和大小

2.3插入和删除

2.4统计和查找

2.5指定排序规则


1.set和multiset容器

set/multiset属于关联式容器,底层结构用二叉树实现的,所有元素在插入时会被自动排序

set/multiset的区别:

  • set不允许容器中有重复元素,multiset允许

1.1构造和赋值

【构造函数】

【拷贝构造函数】

注意:set容器插入相同数据时,不会报错,只是插入失败

1.2交换和大小

【交换函数】

注意:交换的容器内存储的数据类型必须和原容器内存储的相同

【大小函数】

1.3插入和删除

【插入函数】

注意:set容器的insert在插入时返回pair对组,第一个位置为插入位置,第二个位置是bool值,代表插入是否成功

【删除函数】

1.4统计和查找

【统计个数函数】

//key为set容器中存储的元素值

【查找函数】

1.5pair对组

功能:成对出现的数据,利用对组,一次可以返回两个数据

【构造函数】

【访问函数】

first();   //第一个元素              second();  //第二个元素

1.6set和multiset的区别

区别:

  • set不能插入重复数据,multiset可以
  • set插入数据后,会返回是否插入成功
  • multiset不会检测重复数据

1.7指定内置数据类型排序规则

set<int,默认规则> setNumber;

//仿函数
class myCopmare
{
public://仿函数返回值为bool值bool operator()(int v1, int v2){return v1 > v2;	//降序}
};set<int, myCopmare> s;	//降序排序

1.8指定自定义数据类型排序规则

与list类似

2.map和multimap容器

关联式容器,底层用二叉树实现

特点:

  • map中所有元素都是pair
  • 元素会根据key自动排序
  • 可以根据key快速定位value
  • pair中第一个是key,起到索引作用,第二个是value

区别:map不允许有重复key值(插入相同key值不报错,只是插入失败),multimap允许

2.1构造和赋值

【构造函数】

【赋值函数】

//举例
map<int, int> m;
m.insert(pair<int, int>(1, 10));
m.insert(pair<int, int>(2, 20));
m.insert(pair<int, int>(3, 30));

2.2交换和大小

【交换函数】

注意:交换的容器内存储的数据类型必须和原容器内存储的相同

【大小函数】

2.3插入和删除

【插入函数】

注意:利用[ ]访问数据时,要确保key存在,若key不存在会创建key,将value为0的元素插入

//举例
map<int, int> m;
m.insert(pair<int, int>(1, 10));
m[2]=10;    //first=2    second=10;

【删除函数】

2.4统计和查找

【统计函数】

【查找函数】

2.5指定排序规则

map<int,int,默认升序> m;

注意:是按照key来排序的

//举例
class myCopmare
{
public:bool operator()(int v1, int v2){return v1 > v2;	//降序}
};map<int, int,myCopmare> m;	//降序排序


http://www.mrgr.cn/news/61565.html

相关文章:

  • 前端开发:表格、列表、表单
  • C# 正则表达式完全指南
  • 鸿蒙面试 2025-01-09
  • 01 Oracle自学环境搭建(Windows系统)
  • R语言在森林生态研究中的魔法:结构、功能与稳定性分析——发现数据背后的生态故事!
  • net-http-transport 引发的句柄数(协程)泄漏问题
  • Json库和文件操作
  • Cargo 的工作机制
  • 一道巧妙的卡特兰数建模
  • 聊聊解构的那些事
  • 本篇文章来介绍下dockerfile
  • LeetCode 热题 100 回顾2
  • Golang | Leetcode Golang题解之第519题随机翻转矩阵
  • 速盾:海外高防CDN有哪些优势?
  • SpringBoot篇(自动装配原理)
  • 〈壮志凌云:独行侠〉中的超高音速战机
  • Android Studio 无法查看Kotlin源码的解决办法
  • 了解一下,RN中怎么加载 threejs的
  • openEuler 系统中单引号、双引号及转义字符的应用
  • Topaz Video AI for Mac 视频无损放大软件安装教程【保姆级,操作简单轻松上手】
  • 如何解决 Ansys Electronics Desktop 中的 HPC Pack 许可错误
  • C++引用的属性
  • 如何在 CentOS VPS 上设置系统监控的邮件警报
  • 嫉妒经济学:揭秘消费行为背后的情绪驱动力
  • LeetCode Hot 100:技巧
  • WPF+MVVM案例实战(十二)- 3D数字翻牌计时实现