地图插入有两种方式:
m[key] = val;
Run Code Online (Sandbox Code Playgroud)
要么
m.insert(make_pair(key, val));
Run Code Online (Sandbox Code Playgroud)
我的问题是,哪个操作更快?人们通常说第一个较慢,因为如果'key'在map中不存在,STL Standard首先'插入'一个默认元素,然后将'val'分配给默认元素.
但由于'make_pair',我没有看到第二种方式更好.make_pair实际上是一种方便的方式来制作'对' pair<T1, T2>(key, val).无论如何,他们都做了两个任务,一个是将'key'分配给'pair.first',两个分配'val'给'pair.second'.完成配对后,map将插入由'pair.second'初始化的元素.
所以第一种方式是1.' default construct of typeof(val)'2.分配第二种方式是1.赋值2.' copy construct of typeof(val)'