泛型程式設計是一種新的程式設計思想,基於模板技術有效的將演算法和資料結構分離。泛型程式設計是指編寫完全一般化並惡意重複使用的演算法。就是指具有在多種資料型別上皆可操作,在c++上就是使用模板實現。
例如:我們要實現各個資料型別的最大值。需要寫如下的函式過載。
int max(int a, int b)
float max(float a, float b)
double max(double a, double b)
long max(long a, long b)
使用基於c++中提供的泛型程式設計思想,模板的方法可以使用如下的方式替代。這裡的class不代表物件的類,而是型別(可以使用typename替代)這樣max函式的各個引數以及返回值的型別都為t,對於任意型別的兩個數,我們都可以呼叫max求大小。
另外,t作為函式引數以及函式的返回值型別,他幾乎可以是任意型別,也可以是類。當然這個類需要過載">"操作符。
如下示例:
#include "stdafx.h"
#include using namespace std;
#if 1
//template template //typename 也可以使用class代替
t max(t a, t b)
#endif
int main()
值得注意的是 max(3, 2.4),由於引數中包含兩種資料型別,編譯器就不清楚到底該呼叫哪一種版本的max函式。編譯的時候會報出如下的錯誤。所以需要 max(3, 2.4)使用int指定型別為int。
**的測試結果:
max value:2
max value:2.6
max value:2.3456
max value:d
max value:3
請按任意鍵繼續. . .
泛型程式設計簡介
1 資料結構課程的特點 專注於資料元素之間的關係 專注於特定結構之上的演算法 資料結構課程並不關注資料元素的具體型別 如何為資料結構的學習選擇合適的語言?唐老師經驗 支援泛型程式設計的語言是最適合資料結構課程的學習。2 泛型程式設計的概念 不考慮具體資料型別的程式設計方式。c 中的函式模板 1 一種...
泛型程式設計簡介
資料結構課程的特點 專注於資料元素之間的關係 專注於特定結構之上的演算法 資料結構課程並不關注資料元素的具體型別。泛型程式設計的概念 不考慮具體資料型別的程式設計方式 對於swap函式可以考慮下面的泛型寫法 void swap t a,t b swap泛型寫法中的t不是乙個具體的資料型別,而是泛指任...
8 泛型程式設計簡介
目錄 1.資料結構的特點 2.泛型程式設計的概念 3.c 中的函式模板 4.函式模板的語法規則 5.函式模板的使用 6.c 中的類模板 7.類模板的應用 8.小結 問題 如何為資料結構的學習選擇合適的語言?經驗分享 支援泛型程式設計的語言最適合資料結構可能得學習?不考慮具體資料型別的程式設計方式 對...