cb33a_c++_STL_算法_查找算法_(6)binary_search_includes
cb33a_c++_STL_算法_查找算法_(6)binary_search_includes
//针对已序区间的查找算法,如set,multiset关联容器-自动排序
binary_search(b,e,v),begin,end,value--返回bool,不会告诉具体找到的位置。只能找一个
if (binary_search(iset.begin(), iset.end(), 5))//返回bool
binary_search(b,e,v,p) begin,end, value,parameter(谓词)
includes(b,e,sb,se)--begin,end,second begin,second end.可以找多个,不连续的。查找对象必须是排序的,顺序存放的数据。
if(includes(iset.begin(),iset.end(),search.begin(),search.end()))
include (b,e,sb,se,p)--p,parameter,谓词
lower_bound()--找到后,可以返回位置
1 /*cb33a_c++_STL_算法_查找算法_(6)binary_search_includes 2 //针对已序区间的查找算法,如set,multiset关联容器-自动排序 3 binary_search(b,e,v),begin,end,value--返回bool,不会告诉具体找到的位置。只能找一个 4 if (binary_search(iset.begin(), iset.end(), 5))//返回bool 5 binary_search(b,e,v,p) begin,end, value,parameter(谓词) 6 7 includes(b,e,sb,se)--begin,end,second begin,second end.可以找多个,不连续的。查找对象必须是排序的,顺序存放的数据。 8 if(includes(iset.begin(),iset.end(),search.begin(),search.end())) 9 include (b,e,sb,se,p)--p,parameter,谓词 10 11 lower_bound()--找到后,可以返回位置 12 */ 13 14 #include <iostream> 15 #include <algorithm> 16 #include <list> 17 #include <set> 18 #include <vector> 19 20 using namespace std; 21 22 int main() 23 { 24 list<int> ilist; 25 for (int i = 1; i <= 9; ++i) 26 ilist.insert(ilist.end(), i);//从后面插入 27 ilist.push_back(8); 28 set<int> iset; 29 for (int ii = 2; ii <= 10; ++ii) 30 iset.insert(iset.end(), ii); 31 iset.insert(iset.end(),0);//即使在最后插入的0,它也会自动排序,0会移动到最前面的 32 33 for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter) 34 cout << *iter << ' '; 35 cout << endl; 36 cout << "set容器结果查看" << endl; 37 for (set<int>::iterator iter = iset.begin(); iter != iset.end(); ++iter) 38 cout << *iter << ' '; 39 cout << endl; 40 41 if (binary_search(iset.begin(), iset.end(), 5))//返回bool 42 cout << "找到了" << endl; 43 else 44 cout << "没找到" << endl; 45 46 vector<int> search; // 47 search.push_back(3); 48 search.push_back(4); 49 search.push_back(7); 50 if(includes(iset.begin(),iset.end(),search.begin(),search.end())) 51 cout<<"iset里面找 search vector的,3,4,7。同时都找到了"<<endl; 52 //只要包含 3,4,7,就算找到了 53 //注意,vector如果没有顺序排放,就会出错的。3,7,4就不可以。 54 //已序区间,就是已经排序的区域。默认排序的,或者自动排序的容器 55 else 56 cout << "没找到" << endl; 57 58 59 return 0; 60 }
欢迎讨论,相互学习。
cdtxw@foxmail.com