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對對象的擁有權轉到ptr2,ptr1內指針變爲NULL
l 賦值:
std::auto_ptr<ClassA> ptr1(new ClassA);
std::auto_ptr<ClassA> ptr2(new ClassA);
ptr1=ptr2; //ptr2對對象的擁有權轉到ptr1,ptr2內指針變爲NULL,ptr1不在擁有以前的對象。
l 作爲函數參數
當用傳值方式調用時實參auto_ptr的擁有權將轉移至形參,形參在結束生命是會將擁有的東西釋放掉。
當用引用參數形式傳遞參數時?擁有權的概念變得模糊???
4) 不存在針對Array的auto_ptrs
3、模版特化技術