map实际采用了红黑树的实现,在此,我们先不讨论map的底层实现结构原理,先来看看map究竟是怎么用,以及我是怎么看待map的.

先上代码:

 1 #include <map>
 2 #include <string>
 3 #include <iostream>
 4 using namespace std;
 5 int main()
 6 {
 7     map<int, string> mapStudent;
 8     mapStudent.insert(pair<int, string>(1, "student_one"));
 9     mapStudent.insert(pair<int, string>(2, "student_two"));
10     mapStudent.insert(pair<int, string>(4, "student_four"));
11     mapStudent[4] = "student_three";//通过访问键值来修改键值对应的元素
12     mapStudent[5] = "student_five";//若某个新的键值在map中不存在,[]的作用是将这个新的键值以及元素插入到map中
13     mapStudent.insert(map<int, string>::value_type(3, "fuck"));//这一句并没有改变键值3对应的元素值student_three
14     mapStudent.insert(pair<int, string>(3, "lucy"));//这一句并没有改变键值3对应的元素值student_three,因为键值不能重复
15     map<int, string>::iterator iter;
16     for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
17
18         cout << (*iter).first << ' ' << (*iter).second << endl;
19     //out:
20      /*  1 student_one
21          2 student_two
22          3 fuck
23          4 student_three
24          5 student_five*/
25     //研究map键值与元素的修改情况
26     iter = mapStudent.begin();
27     //(*iter).first = 4;//报错:表达式必须是可修改的左值
28     cout <<"原始元素为"<< (*iter).second << endl;
29     (*iter).second = "LTQ";
30     cout << "新元素为" << (*iter).second << endl;
31     //out:
32         /*原始元素为student_one
33         新元素为LTQ*/
34     system("pause");
35     return 0;
36
37 }

上述代码,描述了关于map的应用,从中可以看到这些特点:

1  map 每个节点存在键值和元素,因此pair关键字实际上在map中很常用。

2  map的键值不能重复,也就是不能存相同的键值

3  通过first和second可以访问map的键值和元素

4  map的键值是不能被更改的,元素可以被更改

5  iter != mapStudent.end();关于这一句,我们通常可能根据习惯写成iter < mapStudent.end();但实际上,编译并不能通过。实际上,迭代器并没有重载<运算符!!!

核心:

map可以看做是一种广义的数组,或者说是泛型数组。数组本质上仍然具有键值和元素两个成员(键值其实是其下标,我们通过下标访问数组的元素)。但是对于map而言,这个下标是一种泛型结构,在内存中也不再连续。通常以类的形式存在。因此map具有更为广泛意义的“数组”的本质

转载于:https://www.cnblogs.com/shaonianpi/p/10764380.html

关于map的初级应用相关推荐

  1. java持有对象-map-基本用法

    摘要:最近迷上了<java编程思想>,想对之前模糊的概念进行梳理,此篇梳理的是第11章节的map.虽然看过map源码,但由于数据结构知识的匮乏,所以还是不清楚.不过这里也只是map的初级应 ...

  2. @requestparam map 接收前端的值_前端面试总结篇(初级)

    作为一个优秀的程序员,不仅仅可以解决工作的问题,还要不断的关注前端技术的发展,其中也包括了解最新的前端面试题,那么知识点来了,请接好 1. 你熟悉的es6 let.const.var的使用区别 let ...

  3. HTML初级知识点总结(1.0)

    HTML初级知识点总结(1.0) HTML相关概念 概念 全称:HyperTextMarkupLanguage,超文本标记语言. 超文本:文字.图片.视频.链接等. 标记:标签. 语言:HTML是一种 ...

  4. 初级程序员常犯错误一览

    作者 | 饶全成 来源 | 码农桃花源(ID:CoderPark) 最近接手其他人做的项目,导致之前的一些幻想破灭了.因为刚工作的时候做项目是php,而php本身的web框架一般只简单区分mvc,稍微 ...

  5. 原生 遍历_细品原生JS从初级到高级知识点汇总(三)

    作者:火狼1 转发链接:https://juejin.im/post/5daeefc8e51d4524f007fb15 目录 细品原生JS从初级到高级知识点汇总(一) 细品原生JS从初级到高级知识点汇 ...

  6. java只会用不知道原理6_程序员面试宝典之14道初级Java面试题分享

    程序员面试宝典之14道初级Java面试题分享 程序员面试宝典之14道初级Java面试题分享! 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应 ...

  7. grub4dos初级教程-入门篇

    grub4dos初级教程-入门篇 2008年04月21日 星期一 15:37 0 为何写此初级教程? 假如你是第一次听说grub,你可能说我不需要grub.那么,你是否用过"一键ghost& ...

  8. 互联网公司前端初级Javascript面试题

    互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点) JavaScript是一种基于对象(Object)和事件 ...

  9. LeetCode初级算法(数组)解答

    这里记录了LeetCode初级算法中数组的一些题目: 加一 本来想先转成整数,加1后再转回去:耽美想到测试的例子考虑到了这个方法的笨重,所以int类型超了最大范围65536,导致程序出错. class ...

最新文章

  1. .NET Core ASP.NET Core 1.0在Redhat峰会上正式发布
  2. ASP.NET Core 中文文档 第三章 原理(12)托管
  3. 成功解决OpenCV Error: Assertion failed (ssize.width 0 ssize.height 0) in cv::resize, file C:\proj
  4. Serverless X OpenKruise 部署效率优化之道
  5. STM32开发 -- Git的详细使用
  6. python 用if判断一个数是不是整数_五天学会Python基础02(下)
  7. .iml文件_jetbrains误删maven 项目.iml文件后的处理方法
  8. Unreal Engine 4 —— 版本兼容的工作原理以及一些可优化项
  9. 【★】百度网盘背后的真实策略!
  10. 汇编试验四:[bx] 和 loop 的使用
  11. @scheduled注解配置时间_「玩转SpringBoot」用好条件相关注解,开启自动配置之门...
  12. MATLAB函数或变量无法识别
  13. 连接服务器切换无线,怎么用路由器连接别人的wifi?
  14. 金融数据分析期末报告:基于时间序列的回归模型及其应用
  15. 【日志】ubuntu16.04连接不上Logitech M590蓝牙鼠标(亲测可用)
  16. 使用css动画实现loding效果
  17. Cadence OrCAD Capture 修改添加阵列PIN的递增方向的方法
  18. 漫步数学分析十九——介值定理
  19. 美国计算机技术发展历史,计算机的发展历史
  20. 当当吃海货,不算不会过

热门文章

  1. cie规定的标准光源_孩视宝:健康自然的光源是护眼灯发展的重点
  2. linux 添加定时器,linux 添加定时任务
  3. 家装计算器php,家装计算器
  4. java一行输入多个数据类型_Java中的3种输入方式实现解析
  5. spring mysql防注入攻击_【spring】(填坑)sql注入攻击 - 持久层参数化
  6. 打印一种拓扑排序(假定给的是有向无环图时)DFS+栈
  7. 为什么静态static成员函数不能成为virtual虚函数
  8. 2018年全国多校算法寒假训练营练习比赛(第一场)G. 圆圈
  9. 最小树形图(bzoj 4349: 最小树形图 2260: 商店购物)
  10. 2017百度之星资格赛:1002. 度度熊的王国战略