C 模板元程式設計 選擇排序

2021-10-12 05:52:15 字數 1641 閱讀 7891

資料的結構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 它的主要特點是 函式呼叫不產生任何 沒有可變的...