当前位置:网站首页 > 编程语言 > 正文

stlmap详解(stl map)




🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏:C/C++面试通关集锦 (优质好文持续更新中……)🚀


目录

一、什么是 map ?

二、map的定义

2.1 头文件

2.2 定义

2.3 方法

三、实例讲解

3.1 增加数据

3.2 删除数据

3.3 修改数据

3.4 查找数据

3.5 遍历元素

3.6 其它方法

四、总结


map 在编程中是经常使用的一个容器,本文来讲解一下 STL 中的 map,赶紧来看下吧!

map 是具有唯一键值对的容器,通常使用红黑树实现。

map 中的键值对是 key value 的形式,比如:每个身份证号对应一个人名(反过来不成立哦!),其中,身份证号就是 key,人名便是 value,是单项的关系,可以与 hash 作类比。

2.1 头文件

使用 map 需要引入头文件,如下所示:

 
     

2.2 定义

定义形式如下所示:

 
     

注意:如果没有 using namespace std, map需要写成 std:map。

来看一个简单的例子:

 
     

输出为:

 
     

在上例中,定义了一个key 为 int ,value 为 string 的 map 容器 node。

2.3 方法

map 最常见的方法如下所示:

 
     

3.1 增加数据

方法1:以数组下标的形式直接增加,即:变量名[key] = value 的形式。

 
     

输出为:

 
     

方法2:直接插入键值对。

 
     

输出为:

 
     

其中,pair 定义了一个键值对,对应 map 的 key 和 value。

3.2 删除数据

删除数据使用到 map 的 erase 和 clear方法,来看一下例子:

 
     

输出为:

 
     

其中,clear 方法表示清空容器,size 方法表示获取容器大小。

3.3 修改数据

修改数据仅能修改 value 的值,key 是不能修改的,可以通过增加和删除来实现修改 key。

 
     

输出为:

 
     

3.4 查找数据

查找数据通过 find 函数来实现,如下所示:

 
     

输出为:

 
     

find 方法返回的是 map 的迭代器。 

3.5 遍历元素

遍历元素使用迭代器的方式,如下所示:

 
     

输出为:

 
     

其中,使用迭代器 iter 遍历容器,可以将迭代器理解为一个存储了 key 和 value 的一个结构,first 对应 key,second 对应 value。

3.6 其它方法

(1)swap 函数

交换两个 map 容器的内容,map 容器的类型必须相同,例如:

 
     

输出为:

 
     

(2)max_size

返回当前容器的可以容纳的最大元素个数,来看一个例子。

 
     

输出为:

 
     

(3)rbegin 和 rend

rbegin 和 rend 为反向迭代器,即:rbegin 指向最后一个元素,rend 指向第一个元素的前一个位置,来看一个例子。

 
     

输出为:

 
     

注意:迭代器需要使用反向迭代器。

(4)lower_bound 和 upper_bound

 
     

输出结果为:

 
     

(5)equal_range

 
     

输出为:

 
     

编程中经常使用到 key / value 的形式表示数据之间的关系,故 map 是 STL 中经常使用的一个容器,需要记住 map 的常用方法。


🎈 本文博主原创,创作不易,如果对您有帮助,欢迎小伙伴们点赞👍、收藏⭐、留言💬


到此这篇stlmap详解(stl map)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • dede反编译工具(deb反编译)2026-03-07 19:36:06
  • .yml文件(.yml文件怎么在idea创建)2026-03-07 19:36:06
  • 双系统卸载ubuntu系统并重装怎么办(ubuntu双系统卸载ubuntu)2026-03-07 19:36:06
  • 打开文件目录在哪(打开文件所在目录)2026-03-07 19:36:06
  • 华为模拟器基本配置命令(华为模拟器基本配置命令是什么)2026-03-07 19:36:06
  • 网页聊天程序(网页版聊天工具有哪些)2026-03-07 19:36:06
  • 手机steam怎么扫描二维码登录不了(手机steam怎么扫描二维码登录不了)2026-03-07 19:36:06
  • vbf系列游戏(vb系列的游戏)2026-03-07 19:36:06
  • 游戏的分类标准是什么(游戏的分类标准是什么意思)2026-03-07 19:36:06
  • 蓝牙地址是什么意思(蓝牙地址有什么用)2026-03-07 19:36:06
  • 全屏图片