充電5日目

1274 ワード

テンプレートと汎用プログラミング
かたわく
質問:テンプレートは何に使いますか.
答え:もしあなたが比較関数を書いて、2つの整形値の大きさを比較する場合、コードは以下の通りです.
   1:  int compare(const int &v1, const int &v2)
   2:  {
   3:    if(v1 > v2) return 1;
   4:    if(v1 < v2) return -1;
   5:    return 0;
   6:  }


また、2つのstringタイプの値の大きさを比較したいのですが、どうすれば、関数を利用して再ロードできますか?上のコード:
   1:  int compare(const string &v1, const string &v2)
   2:  {
   3:    if(v1 > v2) return 1;
   4:    if(v1 < v2) return -1;
   5:    return 0;
   6:  }

他の2つの値のサイズを比較する必要があるかもしれませんが、コードを書く必要がありますか?面倒くさい...怖がらないでテンプレートが助けてくれた:
   1:  template <typename T>
   2:  int compare(const T &v1, const T &v2)
   3:  {
   4:    if(v1 > v2) return 1;
   5:    if(v1 < v2) return -1;
   6:    return 0;
   7:  }