在map中操作元素时,我习惯与使用[],例如:
map<int, int> m;
m[1] = 1;
m[1]++;
但是,今天在研究STL源码时,发现这样可能会影响效率。
T& operator[](const key_type& k){
return (*((insert(value_type(k, T()))).first)).second;
}
也就是说operator[]是调用insert来实现的。在调用过程中,需要构造一次pair, 在返回insert的结果时,又需要复制一遍pair。
而如果使用find,只需要返回时复制一遍iterator。
当然如果插入map中不存在的内容, find就无能为力了。