减少使用make_pair

版权声明:本文为博主原创文章,欢迎转载,请标明出处。 https://blog.csdn.net/Think88666/article/details/89433036

在写代码的时候,我们经常在使用map的时候同样使用着make_pair,例如以下的代码

std::map<int,Obj> m;
int i = 0;
Obj1 obj1;
m.insert(make_pair(i,obj1));

为什么说make_pair效率很低呢,因为make_pair的返回值是pair对象,会造成什么结果呢?

obj1拷贝到临时的pair对象中,临时的pair对象再拷贝到m[0]中,你说有多少次构造?又有多少次拷贝?

高效写法

std::map<int,Obj> m;
Obj &obj1 = m[0];
//xxxxxx对obj1进行操作

m[0]存在则返回引用,不存在则自动调用无参构造函数进行构造,你说减少了多少次对象的构造与拷贝?

猜你喜欢

转载自blog.csdn.net/Think88666/article/details/89433036