STL筆記之【map之添加元素】

//---------------------------------------------------------
// 向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

相關文章
相關標籤/搜索