- #include <iostream>
- #include <vector>
- using namespace std;
- //此函数接受2个参数:一个容器对象和要查找的值
- template <class T,class C>
- typename C::difference_type bin_search(C &c, T tt) {
- typename C::difference_type low=0, high=c.size()-1;
- while (low<=high) {
- // mid变量类型设为容器长度相同类型,用int或long取代也可以
- typename C::difference_type mid=(low+high)/2;
- if (c[mid]<tt)
- low = mid + 1;
- else if(c[mid]>tt)
- high = mid -1;
- else
- return mid;
- }
- return -1;
- }
- int main(){
- vector<char> cc;
- cc.push_back('a');
- cc.push_back('c');
- cc.push_back('i');
- cc.push_back('o');
- cc.push_back('t');
- cc.push_back('z');
- char ii = 't';
- long j=bin_search<char, vector<char>>(cc, ii);
- if (j== -1) {
- cout<<"cannot find: "<<ii<<endl;
- } else
- cout<<"find "<<ii<<" in: a["<<j<<"]"<<endl;
- getchar();
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/1612201411292.html
来源: http://www.codesnippet.cn/detail/1612201411292.html