chacoderのブログ

競技プログラミングそのほか

テンプレート関数

はじめに

ライブラリについて勉強する中でときどきtemplateという記述に出会います。
これがどんな機能をもっていてどんなときに使うのかを学びました。

テンプレート関数

テンプレート関数は,引数の型名が変わってもいちいち型名を変更せずにそのままつかえる関数のようっです。テンプレート関数はtemplate及びtypenameという予約語を使って書きます。

template<typename T> 戻り値の型 関数名(引数リスト){}

2つのデータの比較をするcompare関数をテンプレート関数を使って書きます。

#include <bits/stdc++.h>
using namespace std;

template<typename T> void compare(T a,T b){
  if(a>b){
    cout<<a<<" "<<">"<<" "<<b<<endl;
  }
  else if(a<b){
    cout<<a<<" "<<"<"<<" "<<b<<endl;
  }
  else{
    cout<<a<<" "<<"="<<" "<<b<<endl;
  }
}

int main(){
  compare(5,6);
  compare('a','b');
  compare(2.1,2.5);
  compare('E','E');
  compare("cat","dog");
  return 0;
}

出力

5 < 6
a < b
2.1 < 2.5
E = E
cat < dog