C++ Map怎么用?C++ map容器的插入与遍历方法【实例讲解】

C++ map核心是声明、插入、遍历;底层红黑树,按键自动排序且键唯一;声明需指定key/value类型,如map m;插入有[]、insert()、emplace()三种主要方式;遍历常用范围for、迭代器、C++17结构化绑定。

c++ map怎么用?c++ map容器的插入与遍历方法【实例讲解】

用 C++ 的 map,核心就三点:声明、插入、遍历。它底层是红黑树,自动按键排序,键唯一,适合需要有序且快速查找的场景。

怎么声明和初始化 map

map 是模板容器,必须指定键(key)和值(value)类型,比如 map 表示“字符串为键,整数为值”。常用写法:

map m; —— 空 map map m = {{1,"a"}, {2,"b"}}; —— C++11 起支持列表初始化 map m({{10, 3.14}, {20, 2.71}}); —— 构造时传 initializer_list

四种常用插入方式(带区别说明)

插入不只一种写法,不同场景选不同方法:

m[key] = value; —— 最常用。若 key 不存在,自动构造默认值(如 int 为 0),再赋值;存在则覆盖。适合简单赋值,但注意会触发默认构造。 m.insert({key, value}); —— 插入一个 pair。若 key 已存在,插入失败,返回 pair,其中 secondfalse,不覆盖原值。 m.insert(make_pair(key, value)); —— 和上一条等价,C++11 前常用。 m.emplace(key, value); —— 原地构造,避免临时对象,效率略高,推荐用于复杂 value 类型。

三种主流遍历方法(按需选用)

遍历本质是访问每个 pair,键不可改,值可改:

立即学习“C++免费学习笔记(深入)”;

范围 for 循环(最简洁):
for (const auto& p : m) { cout "
const auto& 避免拷贝,p.first 是键,p.second 是值。
迭代器遍历(最通用):
for (auto it = m.begin(); it != m.end(); ++it) { cout first " second
适合需要控制遍历位置或配合算法(如 finderase)的场景。
反向遍历(从大到小):
for (auto rit = m.rbegin(); rit != m.rend(); ++rit) { cout first " second
因为 map 默认升序,反向就是降序输出。

一个小提醒:key 类型要支持比较

map 要求 key 类型能比较大小,默认用 std::less,所以内置类型(intstring)没问题。自定义类作 key 时,得重载 operator 或提供比较函数对象,否则编译报错。

基本上就这些。掌握声明、插入(尤其 []insert 的区别)、遍历(推荐 range-for),日常开发够用了。

以上就是C++ Map怎么用?C++ map容器的插入与遍历方法【实例讲解】的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1489639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 12:34:42
下一篇 2025年12月19日 12:34:56

相关推荐

发表回复

登录后才能评论
关注微信