c++ 泛型程式設計及模板學習

來源:互聯網
上載者:User

標籤:

泛型程式設計,英文叫做Generic programming

可以理解為,具有通用意義的、普適性的,編程。

比如,你要實現一個函數去比較兩個數值的大小,數值可能是int或者string。初次嘗試,我們直觀會想到定義多個重載函數。如下:

int compare(const string &v1, const string &v2)

{

  if( v1 < v2) return -1;

  if ( v2 < v1) return 1;

  return 0;

}

int compare(const int &v1, const int &v2)

{

  if( v1 < v2) return -1;

  if ( v2 < v1) return 1;

  return 0;

}

這兩個函數除了參數的類型之外,幾乎完全一樣。隨著比較的類型增多,我們不得不定義很多類似且冗餘的函數。

泛型程式設計就是為瞭解決此類問題,讓我們獨立於任何特定的類型來編寫代碼。

 

模板是c++泛型程式設計的基礎。模板定義以關鍵字template開始,後面跟一個模板參數列表。模板參數列表用<>包圍起來,裡面是用逗號分隔的一個或多個模板參數。

例如,上述的需求可以寫成如下:

template <typename T>

int compare(const T &v1, const T &v2)

{

  if( v1 < v2) return -1;

  if( v2 < v1) return 1;

  return 0;

}

c++ 泛型程式設計及模板學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.