当前位置: 首页 > news >正文

后台开发:核心技术与应用实践3.4.1 map是什么

3.4 map


3.4.1 map是什么


1.?map的本质

map本质是一类关联式容器,属于模板类关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键值,只能修改其对应的实值。map内部数据的组织,map内部自建一棵红黑树(一种非严格意义上的平衡二叉树),这棵树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。

2.?map的功能

自动建立Key-value的一一对应关系。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述(本篇文章中不用char *来描述字符串,而是采用STL中string来描述),可以使用这样的一个map:Map<int, string> mapStudent;

key和value可以是任意你需要的类型,但是需要注意的是对于key的类型,唯一的约束就是必须支持<操作符。

根据key值快速查找记录,查找的复杂度基本是Log(N),即如果有1000个记录,最多查找10次;1?000?000个记录,最多查找20次。除此之外,还有快速插入Key-Value记录、快速删除记录、根据Key修改value记录、遍历所有记录等功能。

3.?map需要包括的头文件

使用map得包含map类所在的头文件:#include <map> //注意,STL头文件没有扩展名.h。

相关文章:

  • 二分法:从一个只包含数字的list中查找某个数
  • 直方图中最大矩形面积
  • 百度有道雅虎的实习面试经历
  • ubuntu下spring环境搭建
  • Java教程收集
  • Xmemcached vs Spymemcached 3th(linux下测试结果和多节点下表现)
  • Linux以GB显示内存大小
  • install ubuntu on Android mobile phone
  • python3学习之练习题
  • 查询缓存和执行流程
  • POJ-3984-迷宫问题-BFS(广搜)-手写队列
  • rowid去重(删除表的重复记录)
  • 完整的solr java api操作代码块
  • scala 学习笔记--闭了个包
  • JavaScript使用正則表達式
  • [PHP内核探索]PHP中的哈希表
  • 自己简单写的 事件订阅机制
  • 【Linux系统编程】快速查找errno错误码信息
  • 【译】理解JavaScript:new 关键字
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java程序员幽默爆笑锦集
  • Java-详解HashMap
  • js对象的深浅拷贝
  • Logstash 参考指南(目录)
  • Webpack 4 学习01(基础配置)
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 实现简单的正则表达式引擎
  • 温故知新之javascript面向对象
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • (10)ATF MMU转换表
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (windows2012共享文件夹和防火墙设置
  • (汇总)os模块以及shutil模块对文件的操作
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • ***测试-HTTP方法
  • ***通过什么方式***网吧
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net MVC + EF搭建学生管理系统
  • .NET多线程执行函数
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .Net小白的大学四年,内含面经
  • .pyc文件是什么?
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • /var/lib/dpkg/lock 锁定问题
  • @Builder用法
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [ C++ ] STL---string类的模拟实现
  • [16/N]论得趣
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [Android]使用Retrofit进行网络请求
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [C/C++]数据结构 栈和队列()
  • [CF]Codeforces Round #551 (Div. 2)
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出