新闻详情

新闻详情

首页 / 资讯中心 / 详情

C++学习笔记---容器---map映射

发布时间:2026/9/12 20:49:17来源:尧图网络
C++学习笔记---容器---map映射
一、map 核心基础特性必考成对存储以key键 value值成对存储一一映射关系Key唯一不重复键不能重复自动有序默认根据key从小到大升序排序与value无关底层结构平衡二叉搜索树红黑树和 set 完全一致支持下标访问区别于 setmap 可以直接通过mp[key]读写数据二、头文件与标准定义语法1. 必备头文件#include map、#include iostream字符串操作需额外#include string2. 定义格式map键类型, 值类型 容器名; map键类型, 值类型 容器名{{key1,value1}.{key2,value2}}; //不对key排序 unordered_map键类型, 值类型 容器名;3. 常用定义示例mapint, int m1; // 整型键 → 整型值 mapchar, int m2; // 字符键 → 整型值统计字符次数专用 mapstring, int m3; // 字符串键 → 整型值统计单词次数 mapint, string m4; // 整型键 → 字符串值编号对应名称三、map 插入与修改数据两种写法1. 下标法初学首选、最常用既能插入新数据也能覆盖修改旧数据语法简单直观。mapint, string mp; mp[1] C语言; mp[2] C; mp[1] 新版C语言; // key重复直接覆盖旧value2. insert 插入法特点key重复时不覆盖、不生效保留原值。mp.insert({3, Python});核心规则总结key不存在两种方式均为新增键值对key已存在下标法覆盖值insert法无效不修改四、map 两种遍历方式考试必考map中每个元素是键值对.first访问 key键.second访问 value值1. 范围for强化循环重点考点for(auto p : mp){ cout 键 p.first 值 p.second endl; }2. 迭代器遍历//正向 for(auto it mp.begin(); it ! mp.end(); it){ cout it-first it-second endl; } ​//反向 for(auto it mp.rbegin(); it ! mp.rend(); it){ cout it-first it-second endl; }五、map 全套核心成员函数mp.size()获取键值对总个数 mp.empty()判断容器是否为空空返回true mp.clear()清空所有键值对 mp.erase(key)删除指定key的整组键值对 mp.find(key)按key查找元素返回迭代器find() 查找规则和set完全一致查找成功返回当前key的迭代器可取值查找失败返回mp.end()auto it mp.find(2); if(it ! mp.end()){ cout 找到 it-second; }else{ cout 不存在该键; }六、map 超级易错重难点下标访问自动创建数据陷阱使用mp[不存在的key]时不会报错会自动插入该keyvalue默认初始化为0/空。mapint, int mp; cout mp[10]; // 自动新增 key10, value0解决方案单纯判断key是否存在优先使用find()不要用下标判断七、map 初学高频易错点汇总map 排序只看key和value没有任何关系。key唯一下标法插入会覆盖原值insert法插入会保留原值忽略新值。set不能用[]下标map支持[]下标访问是最大区别。下标访问不存在的key会自动新增键值对统计场景极易出错。map遍历必须使用.first、.second取值不能直接输出元素。find函数仅根据key查找无法通过value查找数据。map有序、unordered_map无序做题需根据是否需要排序选择容器。#include iostream #include map #include string using namespace std; int main(){ mapint, string mp; // 1. 下标插入 覆盖修改 mp[2] C; mp[1] Python; mp[3] Java; mp[1] Python新版; // 2. 范围for遍历自动按key升序 cout map有序遍历结果 endl; for(auto p : mp) { cout key: p.first value: p.second endl; } // 3. find查找测试 auto it mp.find(2); if(it ! mp.end()){ cout \n查找成功 it-first it-second endl; }else{ cout \n查找失败 endl; } // 4. 删除元素 mp.erase(3); cout \n删除key3后剩余元素个数 mp.size() endl; return 0; }
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Shiro反序列化漏洞原理与防御实战 2026/9/12 21:37:24

Shiro反序列化漏洞原理与防御实战

1. Shiro反序列化漏洞概述Shiro是Apache基金会旗下的一个轻量级Java安全框架,提供了认证、授权、加密和会话管理等功能。反序列化漏洞是Shiro框架中最为严重的安全问题之一,攻击者利用该漏洞可在目标服务器上执行任意代码,获取系统权限。这个…

阅读更多 →
谈谈多Agent架构核心特性与应用 2026/9/12 21:37:24

谈谈多Agent架构核心特性与应用

多Agent架构 多Agent架构是一种基于多个自主代理(Agent)协同工作的系统设计模式,广泛应用于人工智能、智能机器人和分布式计算等领域。每个Agent具有独立的决策能力和任务执行能力,通过协作完成复杂任务。 1. 多Agent架构的核心…

阅读更多 →
python基础语法学习: requirements.txt 2026/9/12 21:37:23

python基础语法学习: requirements.txt

文章目录requirements.txtrequiremtnes 长什么样?版本约束符号生成 requirements.txt方法一: 手动写方法二: 自动导出当前环境方法四: 只导出直接依赖实际工作流requirements.txt requirements.txt 是一个纯文本文件,用来记录一个 Python 项目所依赖的第三方包及其…

阅读更多 →
Cloudflare Spectrum 常见问题排查指南:连接超时、TLS 错误与 Proxy Protocol 实战 2026/9/12 21:37:23

Cloudflare Spectrum 常见问题排查指南:连接超时、TLS 错误与 Proxy Protocol 实战

Cloudflare Spectrum 常见问题排查指南:连接超时、TLS 错误与 Proxy Protocol 实战 【免费下载链接】skills Skills Catalog for Codex 项目地址: https://gitcode.com/GitHub_Trending/skills4/skills Cloudflare Spectrum 是运行在 Cloudflare 边缘节点的全…

阅读更多 →
Backstage v1.31.0 版本深度解析:Backend System 1.0 稳定发布与新前端系统演进 2026/9/12 21:37:23

Backstage v1.31.0 版本深度解析:Backend System 1.0 稳定发布与新前端系统演进

Backstage v1.31.0 版本深度解析:Backend System 1.0 稳定发布与新前端系统演进 【免费下载链接】backstage Backstage is an open framework for building developer portals 项目地址: https://gitcode.com/GitHub_Trending/ba/backstage Backstage v1.31.…

阅读更多 →
面向 oh-my-posh 文档仓库的 Markdown 内容规范与 markdownlint-cli2 校验工作流 2026/9/12 21:34:23

面向 oh-my-posh 文档仓库的 Markdown 内容规范与 markdownlint-cli2 校验工作流

面向 oh-my-posh 文档仓库的 Markdown 内容规范与 markdownlint-cli2 校验工作流 【免费下载链接】oh-my-posh The most customisable and low-latency cross platform/shell prompt renderer 项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-posh 本篇指南以 …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞