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

【STL】6.<map/multimap>

map/multimap

  • 前言
  • map/multimap容器
    • 一.pair对组(头文件utility)
      • 1.pair初始化
      • 2.pair数据访问
    • 二.map容器的构造与赋值
    • 三.map容器的大小与交换
    • 四.map容器的插入与删除
    • 五.map容器的查找与统计
    • 六.multimap容器
  • 总结

前言

stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。

map/multimap容器

要使用map/multimap要头文件map

map所有的元素都是pair,pair的第一个元素为key(键值),起到索引的作用,第二个元素为value(实值)。
map/multimap属于关联式容器,底层数据结构是用二叉树实现的。它的优点是可以根据key值快速找到value值
map与multimap的区别:map不允许容器中有重复的key值元素;而multimap允许容器中有重复的key值元素

一.pair对组(头文件utility)

pair只含有两个元素可以看作是只有两个元素的结构体。对于成对出现的数据,利用队组可以返回两个数据
在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型不必相同

1.pair初始化

pair<int, int>p1;
p1.first = 1, p1.second = 2;
pair<int, int>p2(10, 20);
pair<int, int)p3 = make_pair(1, 2);
//在使用make_pair时,如果定义的是一个int类型,使用make_pair传入float类型的参数,会将float类型转换为int类型

2.pair数据访问

pair<int, int>p1(1, 2);//初始化
cout << p.first << p.second << endl;
//和结构体类似,first代表第一个元素,second代表第二个元素

二.map容器的构造与赋值

ap<int, int> m1 = { pair<int, int>(1, 10), pair<int, int>(2, 20) };
	map<int, int> m2 = { {1, 10}, {2, 20} };
	map<int, int> m3;//初始化一个空map
	map<int, int> m4(m3);//m3复制给m4
	map<int, int> m5;
	m5 = m4;//将m4复制给m5

三.map容器的大小与交换

m1.size();//输出元素个数
m2.empty();//判断是否为空
m3.swap(m4)//交换两个集合容器

四.map容器的插入与删除

m3.insert(pair<int, int>(1, 10));
m3.insert(make_pair(2, 22));
m3[6] = 66;//与m3.insert(pair<int, int>(6, 66));相等
m4.clear();//将所有的元素清除
m5.erase(n);;//删除容器中值为n的元素
m6.erase(m6.begin(), m6.end());//删除容器的所有元素

五.map容器的查找与统计

find(key);//查找key是否存在,返回该键的迭代器,若不存在返回map.end()
cout(key);//统计ley的元素个数,因为map不能重复所有要么为0要么为1

六.multimap容器

multimap是map映射容器的一种,其拥有map的全部内容,并在此基础上multimap还具有可以重复保存元素的功能,与之前的multiset差不多
multimap使一个key值能够与多个value对应,产生一种如一个学生有多门考试成绩一样的映射

总结

希望大家点赞收藏我会尽快更新STL!!!

相关文章:

  • wordpress 卡密湖南seo优化
  • 做策划的网站推广提高工作效率的重要性
  • wordpress云采集seo推广系统排名榜
  • wordpress评论样式外包优化网站
  • 有阿里云服务器 怎么做网站广州市新闻发布
  • 江西网站开发怎么在百度上打广告
  • Redis 的 Bitmap(位图)的使用场景
  • 基于机器学习的结构MRI分析:预测轻度认知障碍向阿尔茨海默病的转化
  • vscode集成DeepSeek
  • 前端正则表达式完全指南:从入门到实战
  • 海洋cmsv9报错注入,order by 和limit注入
  • HTML:自闭合标签简单介绍
  • C语言(16)---------->二维数组
  • 什么是 MGX:MetaGPT
  • 基于 MyBatis-Plus 的多租户数据隔离方案
  • 自媒体多账号如何切换不同定位才能做得更好
  • 开源|Documind协同文档(接入deepseek-r1、支持实时聊天)
  • 深入探索C#中的async和await:原理、使用方法与最佳实践
  • 【deepseek第一课】从0到1介绍 采用ollama安装deepseek私有化部署,并实现页面可视化
  • Haption:机器人遥操作触觉力反馈技术革新解决方案
  • React核心知识及使用场景
  • Python 数据结构 2.时间复杂度和空间复杂度
  • 二、QT和驱动模块实现智能家居----2、编译支持QT的系统
  • dom有几种获取方式
  • 【pytest框架源码分析一】pluggy源码分析之hook常用方法
  • 如何使用 Ollama 的 API 来生成文本