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. mysql 随机获取数据并插入到数据库中

    insert into result (user_id, activity_id, number) select user_id, activity_id from `activity_record` ...

  2. string类的用法笔记

    要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 ...

  3. zzuli1985(dp/水dfs郑轻比赛)

    再一次感受到dp的威力 1985: 即将到来的新生赛 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 112  Solved: 28 SubmitStat ...

  4. 微信access_token全局缓存,处理过期

    //PHP创建access_token.json文件,将access_token 和 生成时间expires 保存在其中, //{"access_token":"xxxx ...

  5. Idea破解办法+idea免费生成注册码+jsp属性选择器+注解什么的都报错

    Idea破解办法: http://blog.csdn.net/bitcarmanlee/article/details/54951589 idea免费生成注册码: http://idea.iteblo ...

  6. libxl 的使用,读取时间格式

    最近开发使用到 libxl,用的是3.8.0 破解版. 具体过程: 1.将lib.dll放在exe同目录下,在代码中引用 libxl.lib #pragma comment(lib, ".\ ...

  7. PHP:第四章——PHP数组转换,统计,相关函数

    <pre> <?php //数组转换,统计,相关函数 header("Content-Type:text/html;charset=utf-8"); //coun ...

  8. 2017广东工业大学程序设计竞赛决赛 Problem E: 倒水(Water) (详解)

    倒水(Water) Description 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水 ...

  9. DevExpress v17.2新版亮点——CodeRush篇(一)

    用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了CodeRush v17.2 的新功能,快来下载试用新版本! Unit Test ...

  10. HackPwn:TCL智能洗衣机破解细节分析

    上周结束的Hackpwn上,黑客们脑洞大开,破解了比亚迪汽车.小米手环.乐小宝.长虹电视.TCL洗衣机和九阳豆浆机等一系列最新的智能硬件,据黑客介绍,TCL是一家把家门“砌死”的企业,由于得到了将要被 ...