1 BOOLFN (vector<int>::iterator vi1,vector<int>::iterator Vi2,inti)2 {3vector<int>::iterator vi3=vi2-1;4 if(vi1>vi3)5 return 0;6 Else7 {8vector<int>::iterator vi=vi1+ (VI2-VI1)/2;9 if(*vi==i)Ten return 1; One Else if(*vi>i) A returnfn (vi1,vi,i); - Else - returnFN (vi+1, vi2,i); the } - - -}
self-compiled binary_search
1template<classUclassT>2 BOOLFN (U vi1,u Vi2,Constt&i)3 {4U vi3=vi2-1;5 if(vi1>vi3)6 return 0;7 Else8 {9U vi=vi1+ (VI3-VI1)/2;Ten if(*vi==i) One return 1; A Else if(*vi>i) - returnfn (vi1,vi,i); - Else the returnFN (vi+1, vi2,i); - } - - + } - + A attemplate<classUclassTclassP> - BOOLFNN (U vi1,u Vi2,Constt&i,p P) - { -U vi3=vi2-1; - if(vi1>vi3) - return 0; in Else - { toU vi=vi1+ (VI3-VI1)/2; + if(!p (*vi,i)) - FNN (vi1,vi,i,p) the Else if(!p (i,*vi)) * returnFNN (vi+1, vi2,i,p); $ ElsePanax Notoginseng return 1; - } the + A}
Exercise 2 3
Principles and Practice of C + + programming 26th part of the answer