判断 map 容器是否存在某 key 的方法

m.find(key) != m.end();

return m[key]

对于一个 map 容器,先判断键值是否存在,就直接返回,恰因为不会保错,返回 Value 的默认值,而容易引发逻辑错误。

需首先判断 key 是否存在,可用 find() 判断是否存在该 key:

m.find(key) == m.end();

所以:

assert(m.find(key) != m.end());
return m[key];

map.count(key) 判断某 key 是否在字典中

map.count(key):统计某 key 出现的次数,因为字典不允许 key 重复,显然返回值为 0/1,为 0 表示不在字典中,不可直接访问,为 1 表示键在字典中,可访问。

map<string, int> m;
cout << m["China"] << endl;// 显然会引发键错误
if (m.count("China"))cout << m["China"] << endl;

嵌套字典(字典的字典)的插值(insert)

所谓嵌套字典,即 key 对应的 value 其 value type 继续为字典的容器。

map<int, map<int, pair<int, string>>> m;
map<int, pair<int, string>> tmp;
tmp.insert(make_pair(1, make_pair(2, "zch")));
m.insert(make_pair(0, tmp));

标准模板库(STL)之 map 列传 (三)相关推荐

  1. 标准模板库STL(Standard Template Library)

    标准模板库STL(Standard Template Library)指南 /*刘振飞liuzf@pku.org.cn 1999-10-20*/ / *版权所有 (C) 1999-2004 刘振飞li ...

  2. 蓝桥杯算法竞赛系列第0章——蓝桥必考点及标准模板库STL(上)(万字博文,建议抱走)

    欢迎来到:遇见蓝桥遇见你,不负代码不负卿! 目录 ​ 一.蓝桥必考点剖析 二.什么是STL 三.vector的常见用法详解 1.vector的定义 2.vector容器内元素的访问 (1).通过下标访 ...

  3. C++ ——模板 标准模板库STL

    C++ 知识基础 流操作符 类 & 基础 初始化和重载 类 & 高级 继承和多态 模板 & 标准模板库STL 目录 C++ 一.模板 1.函数模板 2.类模板 二.标准模板库S ...

  4. C++ 标准模板库 STL 概述

    泛型程序设计 C++ 的特点: ​ C++ 的核心优势之一就是便于软件重用,而软件的重用在 C++ 中主要体现在以下两个方面: 面向对象的思想:继承.多态和标准类库 泛型程序设计的思想:模板机制和标准 ...

  5. C++ 标准模板库(STL)

    C++ 标准模板库(STL) C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列) ...

  6. c++标准模板库STL【快速查找】【最全】【常用】【语法】

    c++标准模板库STL[快速查找][最全][常用][语法] c标准模板库STL快速查找最全常用语法         vector- 变长数组         set-内部自动有序且不含重复元素     ...

  7. 第十章 标准模板库STL

    第十章 标准模板库STL 因为是在复习时重写的,无法在PTA上验证,编程题格式可能有误. 判断题 1.可以通过下标随机访问向量vector中的元素.(T) 2.当向量对象的内存用完之后,就会产生越界错 ...

  8. C++中标准模板库STL基本概念

    0. 前言 C++语言的一大优势就是便于软件的重用,而重用体现在两方面: 1. 面向对象思想:继承和多态,标准类库 2. 泛程序设计(Generic Programming)思想:模板机制,标准模板库 ...

  9. C++ 标准模板库 STL 容器适配器

    C++ 标准模板库 STL 容器适配器 容器 数据结构 时间复杂度 顺序性 重复性 stack deque / list 顶部插入.顶部删除 O(1) 无序 可重复 queue deque / lis ...

  10. c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解

    c++ 标准模板库 stl 顺序容器 容器 顺序性 重复性 支持迭代器 vector 动态数组 无序 可重复 随机访问迭代器 deque 双向队列 无序 可重复 随机访问迭代器 list 双向链表 无 ...

最新文章

  1. 如何判断数据库的某个字段不为空方法
  2. SAP WM初阶之WM层面的移动类型可以配置成后续TO单据自动产生
  3. 强大的shell常用命令集锦
  4. IDEA启动自动进入最后一个项目
  5. linux unix系统区别,Unix和Linux操作系统有什么区别?看这里!
  6. div不继承父类样式_Python编程思想(27):类的继承
  7. Git学习总结(13)——使用git.oschina作为自己的源代码在线管理库
  8. Linux常用基本命令:三剑客命令之-awk内置函数用法
  9. linux开机自动挂载ntfs,linux 开机自动挂载 NTFS 磁盘(Linux Mint、Ubuntu)[解决挂载 NTFS 后 Windows “快速启动”导致的只能只读模式挂载]...
  10. What Every Programmer Should Know About Memory
  11. excel模板 基金账本_有哪些好用的Excel个人账单模板?
  12. python3实现扫码获取微信openid功能
  13. Combining Word and Entity Embeddings for Entity Linking
  14. 灯塔 (数据结构)
  15. 最简单的视频编码器(一)---libx264
  16. SpreadJS 纯前端表格控件应用案例:金融业数据智能分析平台
  17. 定位及overflow
  18. apache camel 相关配置_Apache Camel简介与入门-java
  19. Nginx+Tomcat+Redis负载均衡实现Session共享
  20. 无损音乐刻录成cd有意义吗_Mac装机必备之拯救歌荒,好用的五款Mac音乐播放器推荐!...

热门文章

  1. php模糊搜索 变量,自定义搜索seo变量{param}字符串
  2. shell脚本中判断大于、小于、等于、不等于的符号
  3. Attempt to do update or delete on table educator.t_item_info that does not use an AcidOutputFormat o
  4. c语言用参数确认递归,C语言程序设计(第4章函数)3
  5. matlab 双谱分析,AR双谱估计的Matlab实现.doc
  6. mysql执行计划id相同_MySQL|MySQL执行计划
  7. js 打印出来的节点多了m_前端实用技术分享—用Vue实现打印指定区域
  8. 面经——操作系统(linux为例)
  9. Tosca:键盘输入字符串
  10. codeforces 792CDivide by Three(两种方法:模拟、动态规划