//---------------------------------------------------------
// 向map中插入元素的方法比較
//---------------------------------------------------------
class A
{
public:
A()
{
cout << "A()" << endl;
}函數
A(const A& rhs)
{
cout << "A(const A&)" << endl;
}class
~A()
{
cout << "~A()" << endl;
}
};構造函數
map<int, A> mapTest;map
//*****************
// 方法一
//*****************
mapTest.insert(map<int, A>::value_type(0, a));
輸出:(3次構造函數)
A()
A(const A&)
A(const A&)
~A()
~A()
~A()方法
//*****************
// 方法二
//*****************
mapTest.insert(pair<const int, 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()make
//*****************
// 方法四
//*****************
mapTest[0] = a;
輸出:(4次構造函數,實際上還調用了一次operator=)
A()
A()
A(const A&)
A(const A&)
~A()
~A()
~A()
~A()co
//*****************
// 方法五
//*****************
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()opera
//---------------------------------------------------------
// 總結
//---------------------------------------------------------
很顯然,方法1、二是最優的,成本最少。
方法五是最差的,成本最高。const