STL學習(二)

STL通用工具

1、  Pairs(對組)

常用的一個便捷函數

namespace std{

template <typename T1,typename T2>

pari<T1,T2> make_pair(const T1& x,const T2& y)

{

return pair<T1,T2>(x,y);

}

}

如:

std::pair<int,char>(42,’@’);óstd::make_pair(42,’@’);

 

2、  Class auto_ptr智能指針smart pointer

1)        auto_ptr設計的重要特點:一個對象只能有一個擁有者,嚴禁一物二主。

2)        創建auto_ptr時使用以下方法:

std::auto_ptr<ClassA> ptr1(new ClassA);

std::auto_ptr<ClassA> ptr2=new ClassA;//error

std::auto_ptr<ClassA> ptr3;

ptr3=new ClassA;//error

auto_ptr作爲參數時初始化操作應該用冒號語法實現。

class A

{public:

A(B x):ptr(new B(x)){}

private:

std::auto_ptr<B> ptr;

};

3)        auto_ptr的擁有權的轉移

l         初始化:

std::auto_ptr<ClassA> ptr1(new ClassA);

std::auto_ptr<ClassA> ptr2(ptr1);//ptr1對對象的擁有權轉到ptr2ptr1內指針變爲NULL

l         賦值:

std::auto_ptr<ClassA> ptr1(new ClassA);

std::auto_ptr<ClassA> ptr2(new ClassA);

ptr1=ptr2; //ptr2對對象的擁有權轉到ptr1ptr2內指針變爲NULLptr1不在擁有以前的對象。

l         作爲函數參數

當用傳值方式調用時實參auto_ptr的擁有權將轉移至形參,形參在結束生命是會將擁有的東西釋放掉

當用引用參數形式傳遞參數時?擁有權的概念變得模糊???

4)      不存在針對Arrayauto_ptrs

3、模版特化技術

發佈了27 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章