C++ map类的用法整理

1. 概述

map是C++中的一种键值对容器,要点就是数据在map中是成对出现的,能够通过键也就是key来快速找到对应的值。要想使用标准C++中map类,必须要包含头文件:

#include <map>

2. 声明

map<int, string> my_map;  //声明一个map; map的键值对类型可以是基础数据类型,也可以是结构体或类

3. map迭代器

和vector一样,map也存在迭代器,方便对map进行遍历操作,map中也存在begin,end,rbegin,rend,前两者为顺序的头尾迭代器,后两者为逆序的头尾迭代器。

map<int, string>::iterator iter = my_map.begin();

4. 插入数据

map中常用的插入数据方式有两种,一种是通过下标插入,一种是通过insert函数插入

my_map[key] = value;
pair<map<int, string>::iterator, bool> Insert_Pair 
= my_map.insert(pair<int, string>(1, "one"));

insert函数中的参数除了可以是pair数据以外,还可以是

map<int, string>::value_type(1, "one")

这样子的格式,但是个人还是比较喜欢直接通过下标插入。这里要注意比较关键的一点是上述两种方式插入的结果可能是不同的。当key在map中已经存在时,通过下标插入会直接覆盖之前的值,而insert则不会插入。从代码中我们也可以看出insert函数的返回值是一个pair,pair的第一个值是要插入的map的和插入值的key相同的那个迭代器,而第二个值就是插入结果,true则成功插入,false则没有。还有一点特别要注意的是不要用下标来查找map中是否存在某键值对,这会导致map中插入新的值或者之前的值被覆盖。

5. 判断key是否存在

对于map来说判断key是否存在是一个非常重要的操作

int num = my_map.count(key);  //返回值是0或1,表示map中某个key出现的次数
//返回值是一个迭代器,如果找到了就是对应的键值对,如果没找到就是my_map.end()对应的迭代器
map<int, string>::iterator iter = my_map.find(key);

6. 删除数据

map中删除数据主要有三种方式,通过迭代器删除某个键值对,通过迭代器删除某些键值对和通过key删除键值对

my_map.erase(iter);
my_map.erase(begin_iter, end_iter);
my_map.erase(key);

7.其他常用函数

my_map.size(); //返回map中的键值对个数
my_map.clear(); //清除map中所有键值对
my_map.empty(); //返回map是否为空,返回值为bool

原文链接: https://www.cnblogs.com/BobPong/p/15871848.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/187777

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午1:46
下一篇 2023年2月12日 下午1:46

相关推荐