首页 > 代码库 > C++程序设计原理与实践 第二十六章部分答案

C++程序设计原理与实践 第二十六章部分答案

 1 bool fn(vector<int>::iterator vi1,vector<int>::iterator vi2,int i) 2 { 3     vector<int>::iterator vi3=vi2-1; 4     if(vi1>vi3) 5         return 0; 6     else 7     { 8         vector<int>::iterator vi=vi1+(vi2-vi1)/2; 9         if(*vi==i)10             return 1;11         else if(*vi>i)12             return fn(vi1,vi,i);13         else14             return fn(vi+1,vi2,i);15     }16 17 18 }
自编的binary_search
 1 template<class U,class T> 2 bool fn(U vi1,U vi2,const T&i) 3 { 4     U vi3=vi2-1; 5     if(vi1>vi3) 6         return 0; 7     else 8     { 9         U vi=vi1+(vi3-vi1)/2;10         if(*vi==i)11             return 1;12         else if(*vi>i)13             return fn(vi1,vi,i);14         else15             return fn(vi+1,vi2,i);16     }17 18 19 }20 21 22 23 template<class U,class T,class P>24 bool fnn(U vi1,U vi2,const T&i,P p)25 {26     U vi3=vi2-1;27     if(vi1>vi3)28         return 0;29     else30     {31         U vi=vi1+(vi3-vi1)/2;32         if(!p(*vi,i))33             fnn(vi1,vi,i,p)34         else if(!p(i,*vi))35             return fnn(vi+1,vi2,i,p);36         else37             return 1;38     }39 40 41 }
习题2 3

 

C++程序设计原理与实践 第二十六章部分答案