作者:堵晴__晨1997_361 | 来源:互联网 | 2024-09-26 12:12
前提:
有以下类:
class A
{
public:
A()
{
cout <<"A()" <const A& rhs)
{
cout <<"A(const A&)" <cout <<"~A()" <map<int, A> mapTest;
方法一
mapTest.insert(map<int, A>::value_type(0, a));
输出:(3次构造函数)
A()
A(const A&)
A(const A&)
~A()
~A()
~A()
方法二
mapTest.insert(pairint, A>(0, a));
输出:(3次构造函数)
A()
A(const A&)
A(const A&)
~A()
~A()
~A()
方法三
mapTest.insert(pair<int, A>(0, a));
输出:(4次构造函数)
A()
A(const A&)
A(const A&)
A(const A&)
~A()
~A()
~A()
~A()
方法四
mapTest[0] = a;
输出:(4次构造函数,实际上还调用了一次operator=)
A()
A()
A(const A&)
A(const A&)
~A()
~A()
~A()
~A()
方法五
mapTest.insert(make_pair(0, a));
输出:(5次构造函数)
A()
A(const A&)
A(const A&)
A(const A&)
A(const A&)
~A()
~A()
~A()
~A()
~A()
总结
很显然:
方法一、二是最优的,成本最少。
方法五是最差的,成本最高。