資料的結構12
3456
78910
1112
1314
1516
1718
1920
2122
2324
2526
template
struct mvector;
template
struct mvector;
};template
struct mvector ;
};template<>
struct mvector<> ;
};這裡我們定義了乙個mvcetor模板,他的作用就是用來儲存資料的。模板的原型是12
template
struct mvector;
他可以輸入任意數量的整數(模板引數可以看作是輸入)。
根據後面的特化,模板一共有四個屬性或型別(這些可以看作是模板的輸出),分別是size,value(第乙個元素的值,方便後面的迭代),next_type(除去頭的尾部,方便迭代),array(mvector的陣列表現形式)。
資料的操作
分割向量
// 分割向量
template
struct splitvector;
template
struct splitvector, mvector> ;
template
struct splitvector<0, mvector, mvector> ;
這個模板的主要目的是將向量從某一部分分離出來(取最大值)。
模板的輸入有三個:index(要分離的元素的位置在rightdata的位置),leftdata(分離的左邊),rightdata(分離的右邊)。
輸出有leftvector(出來的左邊),rightvector(出來的右邊)。
合併向量
// 合併向量
template
struct mergevector;
template
struct mergevector, mvector> ;
將兩個向量合併,主要是用在分割後的向量。
尋找最大值
template
struct findmax;
template
struct findmax, mvector> ;
template
struct findmax, mvector<>> ;
尋找向量中的最大值。輸入有now_index,looped(已經比較的部分),unlooped(未比較的部分)。其中now_index是多餘的,可以使用sizeof…(looped)來代替。
輸出是max(最大值),max_index(最大值的位置,方便後面的分割)
排序對資料操作完成了,這個程式也就完成了一大半了,排序也是非常的簡單,從未排序的列表中,選擇最大的值,放到已經排序好的列表的前面就好了。
// 排序
template
struct selectsortwork;
template
struct selectsortwork, mvector> ;
template
struct selectsortwork, mvector> ;
深圳**建設www.sz886.com
C 模板元程式設計
原理 模板元程式由編譯器在編譯期解釋執行,利用模板特化機制實現編譯期條件選擇結構,利用遞迴模板實現編譯期迴圈結構。模板元程式設計 metaprogramming 意思是,程式設計系統將會執行我們所寫的 來生成新的 而這些新 才真正實現了我們所期望的功能。元程式設計最大的特點在於 某些使用者自定義的計...
C 模板元程式設計
昨天wl發給我一段我覺得很 奇怪 的c 當時沒看太懂,後來問了才知道是叫做模板元程式設計。template struct binary template specialization struct binary 0 terminates recursion 覺得很新奇,於是乎索要了一本電子書,名為 ...
C 之模板元程式設計
關於模板原程式設計知識強烈推薦 非常好!首先複述一下模板元程式設計,以下標紅或者加粗的地方是模板元程式設計的精髓 從程式設計范型 programming paradigm 上來說,c 模板是 函式式程式設計 functional programming 它的主要特點是 函式呼叫不產生任何 沒有可變的...