map:数据的插入

  在构造map容器后,我们就可以往里面插入数据了。这里讲三种插入数据的方法:
第一种:用insert函数插入pair数据

 map<int, string> mapStudent;
mapStudent.insert(pair<int, string>(,“student_one”));
第二种:用insert函数插入value_type数据

map<int, string> mapStudent;
mapStudent.insert(map<int, string>::value_type (,"student_one"));
 第三种:用make_pair
mapStudent.insert(make_pair(, "student_one"));
第三种:用数组方式插入数据
  注意:[]与at的区别

  在C ++ 11中map::at存在:如果该键不存在则抛出异常,如果该元素不存在则find返回aMap.end();如果没有值存在,则为相应键值operator[]初始化一个新值。

  所以最好用:索引操作符[]进行设置和.find().at()查找

map<int, string> mapStudent;
mapStudent[] = “student_one”;
mapStudent[] = “student_two”;
/*
如果是
#include <map>
map<string, int> mapStudent;
string s;
插入就用m[s]++;
*/
  以上四种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是不能再插入这个数据的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,即:如果当前存在该关键字,则覆盖改关键字的值,否则,以改关键字新建一个key—value;
  最后记录下map用lambda表达式for_ecah遍历时的一个小问题
#include <iostream>
#include <map>
#include <algorithm>
using namespace std; int main()
{
map<int ,string> m;
m.insert(pair<int,string>(,"a"));
m.insert(make_pair(,"b"));
m.insert(map<int,string>::value_type (,"c"));
m.insert(pair<int,string>(,"d")); for_each(m.cbegin(),m.cend(),[](const pair<int,string> &it)
{
cout<<"first:"<<it.first<<" second:"<<it.second<<endl;
});
return ;
}

  lambda中的参数列表要写成pair类型,以为map返回的是一对数据,是pair型的,不可只用map<int,string>::iterator it 迭代器来遍历。

浅谈c++中map插入数据的用法的更多相关文章

  1. [技术]浅谈OI中矩阵快速幂的用法

    前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...

  2. 浅谈脱壳中的附加数据问题(overlay)

    Author:Lenus -------------------------------------------------- 1.前言 最近,在论坛上看到很多人在弄附加数据overlay的问题,加上 ...

  3. 【Java学习笔记之三十二】浅谈Java中throw与throws的用法及异常抛出处理机制剖析

    异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待,或死循环. 异常有两个过程,一个是抛出异常:一个是捕捉异常. 抛出异常 抛出异常有三种形式,一是throw, ...

  4. 浅谈C中操作字符串函数的用法(一)

    按照内核string.h中函数的顺序进行大概的介绍,若干函数会给出一个简单的例子.有不足之处还希望各位看到的留言告知. 一.memcpy: 函数原型:extern void * memcpy(void ...

  5. 浅谈Java中set.map.List的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  6. Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  7. 浅谈C中的malloc和free

    转自http://bbs.bccn.net/thread-82212-1-1.html非常感谢作者 浅谈C中的malloc和free 在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的 ...

  8. 【转】浅谈Java中的hashcode方法(这个demo可以多看看)

    浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native i ...

  9. 【转】浅谈Java中的hashcode方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个 ...

随机推荐

  1. hdu2328 kmp

    Beside other services, ACM helps companies to clearly state their “corporate identity”, which includ ...

  2. 常用Java字符API

  3. UVA-10539 Almost Prime Numbers

    题目大意:这道题中给了一种数的定义,让求在某个区间内的这种数的个数.这种数的定义是:有且只有一个素因子的合数. 题目分析:这种数的实质是素数的至少两次幂.由此打表——打出最大区间里的所有这种数构成的表 ...

  4. oracle EBS上传和下载文件(转)

    最近一直在做一个工作流的项目,最终用户要求在发送消息的时候可以附带附件,这个又是给我的一个难题.在网上查了一下ORACLE上传资料,找到了黄建华前辈写的<Oracle EBS Forms开发指南 ...

  5. spting Boot 创建一个springBoot项目

    spting Boot 创建一个springBoot项目 1)学习springBoot使用软件:IDEA软件(前面的文章有安装idea的过程). 也可以使用另一种方法在https://start.sp ...

  6. python读写csv时中文乱码问题解决办法

    https://www.cnblogs.com/shengulong/p/7097869.html 参考1 参考2 参考3 CSV是英文Comma Separate Values(逗号分隔值)的缩写, ...

  7. 亿图图示与visio结合使用

    亿图图示与visio结合使用 Model 图例   思维导图 Camp Awards 思维导图 思维导图 Englilsh camp activity plan 项目管理 Auto WBS 商务 错误 ...

  8. 015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname

    <?php /**文件处理flock 文件锁定 pathinfo realpath tmpfile tempname */ /*$arr=pathinfo('ab.txt');//获取文件路径的 ...

  9. 线程局部存储TLS

    1 .使用线程局部存储的理由 当我们希望这个进程的全局变量变为线程私有时,而不是所有线程共享的,也就是每个线程拥有一份副本时,这时候就可以用到线程局部存储(TLS,Thread Local Stora ...

  10. DevExpress v17.2新版亮点—WinForms篇(四)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.开篇介绍了DevExpress WinForms v17.2 Data Grid Control ...