テンプレートってなんだ?
引数や戻り値がどんな型(クラス)でも関数やクラスを使用する事が出来る素晴らしいもの。
汎用関数の書式
template<class テンプレート型> 引数(t) 関数名( テンプレート型(t) 仮引数名 ) { 処理(t) } あるいは template<typename テンプレート型> 引数(t) 関数名( テンプレート型(t) 仮引数名 ) { 処理(t) }
(t)と書かれている場所に、templateで宣言したテンプレート型を使用する事ができる。
テンプレート型は、複数宣言する事が可能である。
なお、プロトタイプ宣言にはtemplateの記述を付加しておく事。
具体例
#include#include template void print( T dos ) { std::cout << dos << std::endl; } int main( void ) { int i = 100; std::string str = "[´・[ェ]・] <もももっもっ"; print(str); print(i); return 0; } //(環境:Borland C++ 5.5)
実行結果
[´・[ェ]・] <もももっもっ 100
この例の場合、本来なら画面出力の為にint型とstringクラスの関数が必要だが、テンプレートを使う事によって一つの関数として使う事が出来る。
ちなみに、引数の型がテンプレート型でも、関数内の処理が必ずしも全ての型に対応している訳ではない事に注意。