关于map的初级应用
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的初级应用相关推荐
- java持有对象-map-基本用法
摘要:最近迷上了<java编程思想>,想对之前模糊的概念进行梳理,此篇梳理的是第11章节的map.虽然看过map源码,但由于数据结构知识的匮乏,所以还是不清楚.不过这里也只是map的初级应 ...
- @requestparam map 接收前端的值_前端面试总结篇(初级)
作为一个优秀的程序员,不仅仅可以解决工作的问题,还要不断的关注前端技术的发展,其中也包括了解最新的前端面试题,那么知识点来了,请接好 1. 你熟悉的es6 let.const.var的使用区别 let ...
- HTML初级知识点总结(1.0)
HTML初级知识点总结(1.0) HTML相关概念 概念 全称:HyperTextMarkupLanguage,超文本标记语言. 超文本:文字.图片.视频.链接等. 标记:标签. 语言:HTML是一种 ...
- 初级程序员常犯错误一览
作者 | 饶全成 来源 | 码农桃花源(ID:CoderPark) 最近接手其他人做的项目,导致之前的一些幻想破灭了.因为刚工作的时候做项目是php,而php本身的web框架一般只简单区分mvc,稍微 ...
- 原生 遍历_细品原生JS从初级到高级知识点汇总(三)
作者:火狼1 转发链接:https://juejin.im/post/5daeefc8e51d4524f007fb15 目录 细品原生JS从初级到高级知识点汇总(一) 细品原生JS从初级到高级知识点汇 ...
- java只会用不知道原理6_程序员面试宝典之14道初级Java面试题分享
程序员面试宝典之14道初级Java面试题分享 程序员面试宝典之14道初级Java面试题分享! 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应 ...
- grub4dos初级教程-入门篇
grub4dos初级教程-入门篇 2008年04月21日 星期一 15:37 0 为何写此初级教程? 假如你是第一次听说grub,你可能说我不需要grub.那么,你是否用过"一键ghost& ...
- 互联网公司前端初级Javascript面试题
互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点) JavaScript是一种基于对象(Object)和事件 ...
- LeetCode初级算法(数组)解答
这里记录了LeetCode初级算法中数组的一些题目: 加一 本来想先转成整数,加1后再转回去:耽美想到测试的例子考虑到了这个方法的笨重,所以int类型超了最大范围65536,导致程序出错. class ...
最新文章
- .NET Core ASP.NET Core 1.0在Redhat峰会上正式发布
- ASP.NET Core 中文文档 第三章 原理(12)托管
- 成功解决OpenCV Error: Assertion failed (ssize.width 0 ssize.height 0) in cv::resize, file C:\proj
- Serverless X OpenKruise 部署效率优化之道
- STM32开发 -- Git的详细使用
- python 用if判断一个数是不是整数_五天学会Python基础02(下)
- .iml文件_jetbrains误删maven 项目.iml文件后的处理方法
- Unreal Engine 4 —— 版本兼容的工作原理以及一些可优化项
- 【★】百度网盘背后的真实策略!
- 汇编试验四:[bx] 和 loop 的使用
- @scheduled注解配置时间_「玩转SpringBoot」用好条件相关注解,开启自动配置之门...
- MATLAB函数或变量无法识别
- 连接服务器切换无线,怎么用路由器连接别人的wifi?
- 金融数据分析期末报告:基于时间序列的回归模型及其应用
- 【日志】ubuntu16.04连接不上Logitech M590蓝牙鼠标(亲测可用)
- 使用css动画实现loding效果
- Cadence OrCAD Capture 修改添加阵列PIN的递增方向的方法
- 漫步数学分析十九——介值定理
- 美国计算机技术发展历史,计算机的发展历史
- 当当吃海货,不算不会过
热门文章
- cie规定的标准光源_孩视宝:健康自然的光源是护眼灯发展的重点
- linux 添加定时器,linux 添加定时任务
- 家装计算器php,家装计算器
- java一行输入多个数据类型_Java中的3种输入方式实现解析
- spring mysql防注入攻击_【spring】(填坑)sql注入攻击 - 持久层参数化
- 打印一种拓扑排序(假定给的是有向无环图时)DFS+栈
- 为什么静态static成员函数不能成为virtual虚函数
- 2018年全国多校算法寒假训练营练习比赛(第一场)G. 圆圈
- 最小树形图(bzoj 4349: 最小树形图 2260: 商店购物)
- 2017百度之星资格赛:1002. 度度熊的王国战略