有两种映射插入的方式:
m[key] = val;
或者m.insert(make_pair(key, val));
我的问题是哪一个操作更快?通常人们说第一种方式较慢,因为STL标准首先会在map中插入一个默认元素,如果'key'不存在,然后将'val'赋值给该默认元素。
但是我不认为第二种方式更好,因为使用'make_pair'实际上比pair<T1, T2>(key, val)
更方便。无论如何,它们都执行了两个赋值操作,一个是将'key'赋值给'pair.first',另一个是将'val'赋值给'pair.second'。创建了pair之后,map插入由'pair.second'初始化的元素。
因此,第一种方式是1. 'typeof(val)
'的默认构造 2. 赋值操作;第二种方式是1. 赋值操作 2. 'typeof(val)
'的复制构造。