#include
#include
using namespace std;
/*關於find使用的資料結構,我們必須知道那些情況呢?
1.我們正在查詢某個型別為int的值
2.我們正在乙個int物件陣列中進行查詢
3.我們已經預先知道了陣列中的元素的數目
4.我們知道了第乙個元素的位址
*/const int* find1(const int* array, int n, int x)
++p;
}return 0;}/*
* 使用模板去除對int的依賴性
*/template
t* find2(t* array, int n, const t& x)
++p;
}return 0;}/*
* 用!=而不用《來判斷迴圈結束並不是偶然的。從某種角度來說,兩者沒有區別:如果find3的輸入有意義,則p就小於beyond,之道他們相等為止。但是,由《加以總體排序的型別通常也能用!=來進行畢竟。另一方面,考慮一下我們以後可能會用到的用來代替指標的型別,它們可能能夠很多地定義!=,,但是不能定義<。此時,使用《就是乙個不合理的型別。
*/template
t* find3(t* array, t* beyond, const t& x)
++p;
}return 0;
}///這裡return beyond,而不是return 0是對通用性的渴望,返回0也是沒有問題的
template
t* find4(t* array, t* beyond, const t& x)
++p;
}return beyond;}/*
* 可以把指標當作引數接受,並把它們作為結果返回
* 可以比較指標相等不相等
* 可以解除引用指標,以便得到乙個值
* 可以遞增指標,以指向下乙個元素
*/template
p find6(p start, p beyond, const t& x)
int main()
C 沉思錄讀書筆記(17章) 見識泛型演算法的威力
在這回的學習中,我們能體會到泛型演算法的威力,這是通過模板 抽象 實現的 泛型演算法是一種用對其所用的資料結構進行盡可能少的假設的方法表達的演算法,模板使得泛型 genericity 更為容易 首先來看乙個簡單的例子,假設我們想找整形陣列中第乙個等於某個給定值的元素,很簡單,如下 const int...
泛型程式設計沉思錄 面向模版和參量化型別程式設計
模版型別 參量型別 型別約束 擴充套件 泛型程式設計是上述四個概念反覆組合而形成的一種程式設計正規化 泛型程式設計 模版型別 參量型別 模版型別 與引用型別無關的通用演算法和結構 產生功能模版復用的新型別 通過型別的組合產生新的型別 目的是通過型別組合產生新的型別 新型別的能力由模版型別和新型別雙方...
C 泛型演算法
標準庫並未給每個容器都定義成員函式來實現這些操作,而是定義了一組泛型演算法,稱他們為演算法是因為他們實現了一些經典演算法的公共介面,如排序和搜尋 稱他們為排序的是因為它們可以用於不同型別的元素和多種容器型別。大多數演算法都定義在標頭檔案algorithm中。標準庫還在標頭檔案numeric中定義了一...