最近寫演算法,習慣上了泛型程式設計,一敲鍵盤,就會不由自主的打出乙個
template
出來。比如前一陣子的萬用字元搜尋庫的模組,以及剛剛完成的通用集合運算。
通用集合運算的主要功能是:
輸入: 集合列表, 集合列表索引的並、交、差運算資訊串
輸出: 集合列表在該資訊串的運算下所得結果集合
比如:
setlist =
setoplist = 「(0+2)*((1-3)+4)」
則可以計算出乙個
set出來,為
(set0∪
set2)
∩((set1
-set3)
∪set4)
的結果。
用函式物件來做的話,就成了
template
tset, typename topelem> class csetlogicop 這樣任意的集合以及資訊串的形式都可以利用該演算法了,但因為是引數形式, tset 的並、交、差等集合運算怎麼辦呢?資訊串表位置的子串如何向整數索引轉化呢? 乙個念頭一閃而過,加上兩個介面來定義這些所需要的操作,不就一切 ok了?比如: template tset> class isetop 這樣就成了真正的通用演算法了,想做什麼樣的集合運算,只要把這個元操作的介面實現,然後初始化到 csetlogicop 中,就可以使用這個模版函式物件了。 問題 用c 語言實現求乙個數的平方。分析 乙個數,可以是int double complex等,規則求數的平方 x x 偽 sqrt x return x x 實現一 提供一組用於求不同數字型別的平方函式。int sqrtint int x int sqrtdouble double x 實現二 上... 我們從乙個很簡單的問題來進入泛型程式設計 question 如何寫乙個通用的加法函式 使用函式過載。針對每乙個所需相同行為的不同型別重新實現 函式過載的缺點 1 只要有 型別出現,就要重新新增對應函式 2 除型別外,所有函式的函式體都相同,的復用率不高 3 如果函式知識返回值型別不同,函式過載不能解... 1 資料結構課程的特點 專注於資料元素之間的關係 專注於特定結構之上的演算法 資料結構課程並不關注資料元素的具體型別 如何為資料結構的學習選擇合適的語言?唐老師經驗 支援泛型程式設計的語言是最適合資料結構課程的學習。2 泛型程式設計的概念 不考慮具體資料型別的程式設計方式。c 中的函式模板 1 一種...泛型程式設計之泛型引數
模板 泛型程式設計
泛型程式設計簡介