STL 類模板

2021-06-25 16:56:08 字數 847 閱讀 1821

1.模板

//模板裡面也可以有非型別的引數,原則上只能是整數,而且是字面量

字面量在編譯時就確定下來。

也可以有預設值

template

stacks;

一般的型別使用模板就可以搞定,特殊的型別就使用特化

想檢視實際替換時是什麼型別,這就需要執行時型別識別函式了typeid

最好不要把模板的宣告與定義分開,麻煩

模板的特化:

例子:template

class fact;};

template <>

class fact<0>;};

template

class type

};class type

;const char* const type::name="char";

template

class type

};int main()

int main()

例子:帶兩個引數的類模板

template

to convertto(from v)

template

to convertto(const char* str)

template

struct pair

pair(const t& a, const u& b):first(a),second(b){}

template

pair& operator=(const pair& p)

};template

ostream&operator<<(ostream& o, const pair& p)

int main()

STL典型使用 vector類模板

vector是將元素放在乙個動態陣列中加以管理的容器,vector可以隨機訪問元素 用操作符或at 直接訪問 也支援迭代器訪問元素 vector在尾部新增或移除元素十分高效,但是在中間或者頭部插入 移除元素會比較費時。vector採用類模板實現,從而實現了演算法和資料型別的分離,因此vector可以...

C 的STL模板類 nth element

在c 的stl庫中,提供了nth element這樣乙個函式,標頭檔案algorithm 它的用法是nth element a l,a k,a r 這樣它會使a這個陣列中區間 l,r 內的第k大的元素處在第k個位置上 相對位置 將第k th 元素放到它該放的位置上,左邊元素都小於它,右邊元素都大於它...

c 類模板 STL(1)

定義類模板 template iterator it 訪問乙個迭代器所指向的元素 迭代器變數名 如 it 5 3 演算法 即很多函式模板的集合,提供了大量演算法,用於操作各種容器。包括了比較 排序 修改 複製等等 演算法通過迭代器操作容器中的元素 vector實際上是對動態陣列的封裝,與陣列一樣,v...