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...