std::map的insert和下标[]访问

From: http://www.cnblogs.com/kex1n/archive/2011/11/16/2251520.html

 

在map中插入元素

改变map中的条目非常简单,因为map类已经对[]操作符进行了重载

enumMap[1] = "One";
enumMap[2] = "Two";
.....

这样非常直观,但存在一个性能的问题。插入2时,先在enumMap中查找主键为2的项,没发现,然后将一个新的对象插入enumMap,键是2,值是一个空字符串,插入完成后,将字符串赋为"Two"; 该方法会将每个值都赋为缺省值,然后再赋为显示的值,如果元素是类对象,则开销比较大。我们可以用以下方法来避免开销:

enumMap.insert(map<int, CString> :: value_type(2, "Two"))

 

 

insert()方法:若插入的元素的键值已经存在于map中,那么插入就会失败,不会修改元素的键对应的值;若键值在map中查不到,那么就会将该新元素加到map中去。

下标[key]方法:若插入元素的键值已经存在于map中,那么会更新该键值对应的值为新的元素的值;若该键值在map中找不到,那么就会新建一个键值为该键(key)的元素,并将key对应的值赋值为默认值(默认构造函数生成的对象)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Delphi工具之TDUMP

TDUMP是一个命令行程序&#xff0c;它输出.exe或.dll&#xff08;以及其他文件类型&#xff09;文件的结构。 TDUMP位于Delphi安装目录下的Bin目录里&#xff0c;如下&#xff1a; 缺省时&#xff0c;TDUMP的输出显示到屏幕上&#xff1b; 用户可以将TDUMP的输出定向到一个文本…

《与mysql零距离接触》视屏学习笔记

1、数据表的增删改查操作(crud)&#xff1a; 对于表&#xff1a; 增&#xff1a;create table XXXX 删&#xff1a;drop table XXXX 改&#xff1a;alter table XXXX rename to XXXX 查&#xff1a;select * from XXXX 对于行&#xff1a; 增&#xff1a;insert into XXXX(…

[Linux C]重启设备(系统)

说白了其实很简单&#xff0c;看代码: [zcmc #17]$cat r.c#include <sys/reboot.h>int main( void ){puts("reboot now");reboot(RB_AUTOBOOT);return 0;}[zcmc #18]$makegcc -g -o r r.c [zcmc #19]$执行下"./r"&#xff0c;系统将会重启&#xff0…

网络监控如影随形

网络监控如影随形 作为网络管理人员要做好网络设备的流量监控&#xff0c;及时洞悉网络流量的变化&#xff0c;就能及时发现潜在的网络故障&#xff0c;及时定位故障部位&#xff0c;及时予以排除&#xff0c;从而做到防患于未然。可是网管人员经常会由于各种事情不再网管机旁边…

JAVA基础进阶day01

最近一段时间的自学重心是安卓底层。首先啃一下java。新年伊始&#xff0c;向着 知识的海洋急行军&#xff0c;世界人民团结万岁…. 笔记方式为代码加注释的方式: 一、最基础 public class Hello {public static void main(String args[]) {System.out.println("Hello,…

libevent的使用(socket)

From: http://blog.csdn.net/kaitiren/article/details/35253319 这篇文章介绍下libevent在socket异步编程中的应用。在一些对性能要求较高的网络应用程序中&#xff0c;为了防止程序阻塞在socket I/O操作上造成程序性能的下降&#xff0c;需要使用异步编程&#xff0c;即程序…

消费者承担消费税真的吃亏了吗?

像小老鼠一样享受&#xff0c;才不管消费税呢其实&#xff0c;我本来对经济学不感兴趣。一次偶然的机会&#xff0c;我在朋友的寝室里看到了传说中经济学最经典的教材之一——曼昆&#xff08;Mankiw&#xff09;的《经济学原理》。好奇心驱使我随手翻开了一页&#xff0c;读了…

JAVA进阶day02

老规矩&#xff0c;贴代码做注释&#xff1a; class Person {static int count;String name;int age;String getName() {return "guangdong "name;}static {System.out.println("static block"); }{System.out.println("construct block");…

cocos2dx libevent简介和使用

From: http://blog.csdn.net/kaitiren/article/details/35254577 libevent是一个基于事件触发的网络库&#xff0c;memcached底层也是使用libevent库&#xff0c;今天学习下。总体来说&#xff0c;libevent有下面一些特点和优势&#xff1a;* 统一数据源&#xff0c; 统一I/O事…

Linux查看主板的相关信息

一条命令就能知道主板的一些信息&#xff0c;具体的内容就无需解释了&#xff0c;诸如厂商啊什么的&#xff0c;英文词的借助Google吧&#xff0c;哈哈 转载于:https://blog.51cto.com/kumu1988/1086248

jenkins相关

1. jenkins maven tomcat做持续集成的时候几个关键配置&#xff1a;http://my.oschina.net/congqian/blog/112782?fromerrPmIDbLs5 2. Linux下安装Git&#xff1a;http://www.cnblogs.com/zhcncn/p/4030078.html 3. jenkins的使用教程&#xff1a;修改jenkins默认的用户&#…

Java进阶day03继承

先贴代码后分析&#xff1a; class Person {private int age;public void setAge(int age) {if (age < 0 || age > 200)age 0;else {this.age age;}}public int getAge() {return age;} public void printInfo() {System.out.println("age "age);}public…

在mac上配置cocos2d-x开发环境

From: http://www.cnblogs.com/xiaodao/archive/2013/01/08/2850751.html 一、下载cocos2d-x最新安装包 在终端中cd到本地将要存放目录&#xff0c;执行git命令 git clone https://github.com/cocos2d/cocos2d-x.git 二、如果开发ios程序&#xff0c;需要配置xcode模板 下好…

Orcale用户管理

类 ------表对象----行属性----列 软件开发流程&#xff1a;需求调研需求分析概要分析详细分析编码测试上线维护 论坛&#xff1a;1.注册和登录2.发帖&#xff0c;回帖(关注&#xff0c;浏览数)用户:(昵称&#xff0c;性别&#xff0c;年龄)主帖&#xff1a;(标题&#xff0c;内…

ASP.NET笔记(三)

一、使用主题自定义网站&#xff08;App_Themes&#xff0c;<Page Theme/StyleSheetTheme..>&#xff0c;<page theme"">&#xff09; 创建主题并将其应用于页 在 Visual Web Developer 中&#xff0c;右击网站名&#xff0c;单击“添加 ASP.Net 文件夹”…

JAVA进阶day04多态(向上转化,向下转化)

java多态让我觉得比较绕的就应该是向上转化跟向下转化了。 一、向上转化 class Father {private int money; public int getMoney() {return money; }public void setMoney(int money) {this.money money; }public void printInfo() {System.out.println("This is Fat…

将time_t格式的字符串转换成具体的时间, 存放在SystemTime结构体中

记录下&#xff0c;方便日后直接使用 直接上源码: 先来个结构体定义&#xff1a; struct SystemTime{int year; ///< 年。 int month; ///< 月&#xff0c;January 1, February 2, and so on. int day; ///< 日。 int wday; ///< 星期&#xff…

磁盘IO:缓存IO与直接IO

文件系统IO分为DirectIO和BufferIO,其中BufferIO也叫Normal IO。 1. 缓存IO 缓存I/O又被称作标准I/O&#xff0c;大多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中&#xff0c;数据先从磁盘复制到内核空间的缓冲区&#xff0c;然后从内核空间缓冲区复制到应用程…

F#初学笔记08

惰性求值惰性求值也叫按需调用&#xff0c;是一个演算策略&#xff0c;延迟一个表达式的演算&#xff0c;直到需要用到演算值的时候再演算&#xff0c;同时也避免了重复演算。惰性求值的好处包括&#xff1a;避免不必要的计算&#xff0c;提升性能。可以构造以构造一个无限的数…

JAVA进阶day05包和权限

我这种外行人也听说过jar包&#xff0c;jar到底是个啥&#xff1f;为啥c语言里没有呢&#xff1f;下面我们拨开这一层面纱。贴代码做分析&#xff1a; 一、jar包 import a.b.c.d1.*; import a.b.c.d2.*;public class Pack {public static void main(String args[]) {/* add *…