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 }
欢迎讨论,相互学习。 txwtech@163.com
原文地址:https://www.cnblogs.com/txwtech/p/12337463.html