【发布时间】:2011-08-07 05:22:42
【问题描述】:
地图插入有两种方式:
m[key] = val;
或者
m.insert(make_pair(key, val));
我的问题是,哪种操作更快? 人们通常说第一个比较慢,因为 STL 标准首先在 map 中不存在“key”时“插入”一个默认元素,然后将“val”分配给默认元素。
但我不认为第二种方式更好,因为'make_pair'。与pair<T1, T2>(key, val) 相比,make_pair 实际上是一种方便的“配对”方式。无论如何,他们都做了两个分配,一个是将'key'分配给'pair.first',两个分配'val'给'pair.second'。 pair 生成后,map 会插入 'pair.second' 初始化的元素。
所以第一种方式是 1. 'default construct of typeof(val)' 2. 赋值
第二种方式是 1. assignment 2. 'copy construct of typeof(val)'
【问题讨论】:
标签: c++ stl map insert std-pair