如何設計乙個泛型演算法

2021-04-20 23:57:25 字數 1578 閱讀 6969

#include

#include

#include

#include

#include

using namespace std;

//下面我們的新任務。

//使用者給乙個整數 vector 我們必須返回乙個新的 vector ,其中內含原 vector 之中小於 10 的所有數值

//乙個快速但缺乏通用性的解法是:

///*

vectorless_than(const vector&vec)

bool qwer(int v1,int v2)

*///我們探索並沒有停止,標準庫提供了兩個函式:bind1st 會將指定值繫結至第一運算元,

//bind2nd 則將指定值繫結至第二運算元,詳細可以看 msdn

//以下是修改後的 filter()

/*vectorfilter(const vector&vec,int val,less<)

return nvec;}*/

//但這個還不是我們想要的,要更通用的如 例3:

//注意 這兩個標頭檔案    #include

//    #include

/*template

output filter(input first,input last,output at,const elemtype &val,comp pred)

*/// 例4:上面的沒有什麼可玩性,還是把它做成通用的模板吧 如:

/*templatevect sub_vec (vect &vec,vaule val)

*///驅動程式

int main()

;vectorvec(aa,aa+5);

vectortemp;//儲存過濾結果

//temp=less_than(vec,12);//less_than(vec) 這個函式返回的是乙個 vector 所以用乙個vector 物件來接收它

//temp=filter(vec,12,greater_than);//大於

//    temp=filter(vec,12,less_than);//小於

temp=filter(vec,11,qwer);//等於

for(vector::iterator p=temp.begin();p!=temp.end();p++)

coutint aa2[elem_size];//儲存過濾結果

vectorivec2(elem_size);

cout<<"小於 15 的:/n"<());

cout<<"大於 15 的:/n"<());

*//*

//例 4:

const int size=6;

int aa[size]=;

vectorvec(aa,aa+6);

vectorvec2;

vec2=sub_vec(vec,25);

cout<<"小於 25 的有:"<::iterator p=vec2.begin();p!=vec2.end();p++)

cout<<'/n';

*/return 0;

}

設計乙個泛型演算法

演算法的目的很簡單,找出小於 大於 elem size的元素並列印.先貼上 include algorithm 泛型演算法 include functional function object include vector include iostream using namespace std t...

C 泛型設計的乙個小陷阱

距離上次發表部落格已經有幾年了.對於沒能堅持更新部落格,實在是感覺到甚是慚愧.閒言少敘,直接切入主題.最近一直在對於公司乙個網路通訊服務程式使用.net core 進行重構.重構的目的有兩個 一是讓程式能夠跨平台執行.二是優化程式 結構是程式的可維護性有所提公升.重構的過程主要由我來設計底層的架構....

泛型演算法的設計 1

泛型演算法的設計 1 前言 泛型演算法獨立於操作的容器且與要操作的元素型別無關,達到了函式彈性設計的最大化,下面我們一步步的實現乙個泛型演算法 1.有一天,老闆交給你乙個任務,要你程式設計完成如下工作,給定乙個儲存整數的vector,及乙個整數,如果此值存在於vector內,我們必須返回乙個指標指向...