STL中的型別

2021-04-20 03:26:30 字數 842 閱讀 6455

一、常整數對映為型別

alexandrescu提出的簡單而有用的template

template

struct int2type

enum ;

template

class niftycontainer

private:

void dosomething(t* pobj, int2type)

t* pnewobj = pobj->clone();

void dosomething(t* pobj, int2type)

t* pnewobj = new t(*pobj);

public:

void dosomething (t* pobj)

dosomething(pobj, int2type( ) );

上面的小技巧之所以有效是因為:編譯器並不會去編譯乙個未被使用到的template函式,只會對它進行文法檢查。

二、型別對型別的對映

template

struct type2type

typedef t type;

template

t* create(const u&arg, type2type)

return new t(arg);

template

widget* create(const u& arg, type2type)

return new widget(arg, -1);

string* pstr = create("hello", type2type( ) );

widget* pw = create(100, type2type( ) );

stl中的型別轉換

static cast dynamic cast const cast reinterpret cast 1 static cast 可以把static cast看做乙個強制轉換的操作。沒有什麼好說的。2 dynamic cast 類的繼承關係圖 a為基類 void f d pd 還存在一種交叉轉換...

STL 容器型別

1.stl有6種序列容器型別 1 vector 向量 相當於乙個陣列 在記憶體中分配一塊連續的記憶體空間進行儲存。支援不指定vector大小的儲存。stl內部實現時,首先分配乙個非常大的記憶體空間預備進行儲存,即capacituy 函式返回的大小,當超過此分配的空間時再整體重新放分配一塊記憶體儲存,...

STL 容器型別

1.stl有6種序列容器型別 1 vector 向量 相當於乙個陣列 在記憶體中分配一塊連續的記憶體空間進行儲存。支援不指定vector大小的儲存。stl內部實現時,首先分配乙個非常大的記憶體空間預備進行儲存,即capacituy 函式返回的大小,當超過此分配的空間時再整體重新放分配一塊記憶體儲存,...