cb30a_c++_STL_算法_查找算法_(3)search_find_end
cb30a_c++_STL_算法_查找算法_(3)search_find_end
search()
pos = search(ideq.begin(), ideq.end(), ilist.begin(), ilist.end());
find_end(),从后面开始找
注意:
这两个算法是一对
第二个算法应该叫search_end(),但是被命名为find_end()
pos2 = search(ivec.begin(), ivec.end(),checkEvenArgs,checkEvenArgs+3, checkEven);
//ivec.begin(), ivec.end()传给第一个参数,elem.
//,checkEvenArgs,checkEvenArgs+3,传给checkEven的第二个参数,even
//bool checkEven(int elem, bool even)//二元谓词,两个return
/*cb30a_c++_STL_算法_查找算法_(3)search_find_end
search()
pos = search(ideq.begin(), ideq.end(), ilist.begin(), ilist.end());
find_end(),从后面开始找 注意:
这两个算法是一对
第二个算法应该叫search_end(),但是被命名为find_end() pos2 = search(ivec.begin(), ivec.end(),checkEvenArgs,checkEvenArgs+3, checkEven);
//ivec.begin(), ivec.end()传给第一个参数,elem.
//,checkEvenArgs,checkEvenArgs+3,传给checkEven的第二个参数,even
//bool checkEven(int elem, bool even)//二元谓词,两个return
*/
#include <iostream>
#include <algorithm>
#include <deque>
#include <list>
#include <vector> using namespace std; //1,2,2,4,5
//true, false, true
//false表示奇数
//true 偶数 bool checkEven(int elem, bool even)//二元谓词,两个return
{
if (even)
return elem % == ;//
else
return elem % == ;//
}
//把 true, false, true,三个传进去,连续3个都返回true,说明查找到了。 int main()
{
deque<int> ideq;
list<int> ilist;
for (int i = ; i <= ; ++i)
ideq.insert(ideq.end(), i);//插入到最后
for (int i = ; i <= ; ++i)
ideq.insert(ideq.end(), i);//插入到最后
for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
cout << *iter << ' ';
cout << endl;
for (int i = ; i <= ; ++i)
ilist.insert(ilist.end(), i);
for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
cout << *iter << ' ';
cout << endl; deque<int>::iterator pos;
pos = search(ideq.begin(), ideq.end(), ilist.begin(), ilist.end());
cout << "在ideq容器里面找ilist" << endl;
if (pos != ideq.end())
cout << "找到了位置:" << distance(ideq.begin(), pos)+ << endl;
else
cout << "没找到" << endl;
++pos;
pos = search(pos, ideq.end(), ilist.begin(), ilist.end());
cout << "在ideq容器里面找ilist" << endl;
if (pos != ideq.end())
cout << "找到了位置:" << distance(ideq.begin(), pos)+ << endl;
else
cout << "没找到" << endl; cout << "使用find_end,从后面开始查找。进行查找:" << endl;
pos = find_end(ideq.begin(), ideq.end(), ilist.begin(), ilist.end()); if (pos != ideq.end())
cout << "找到了位置:" << distance(ideq.begin(), pos) + << endl;
else
cout << "没找到" << endl; cout << "使用谓词查找" << endl; vector<int> ivec;
bool checkEvenArgs[] = {true,false,true};
for (int i = ; i <= ; ++i)
ivec.push_back(i);
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
cout << *iter << ' ';
cout << endl;
vector<int>::iterator pos2;
pos2 = search(ivec.begin(), ivec.end(),checkEvenArgs,checkEvenArgs+, checkEven);
//ivec.begin(), ivec.end()传给第一个参数,elem.
//,checkEvenArgs,checkEvenArgs+3,传给checkEven的第二个参数,even
//bool checkEven(int elem, bool even)//二元谓词,两个return //1,2,3,4,5,6,7
//true,false,true. 对应2,3,4。所以在第二就找到了。显示2
if (pos2 != ivec.end())
cout << "找到了,位置是:" << distance(ivec.begin(), pos2)+ << endl;
else
cout << "没找到" << endl;
return ;
}
cb30a_c++_STL_算法_查找算法_(3)search_find_end的更多相关文章
- cb34a_c++_STL_算法_查找算法_(7)_lower_bound
cb34a_c++_STL_算法_查找算法_(7)_lower_bound//针对已序区间的查找算法,如set,multiset关联容器-自动排序lower_bound()--第一个可能的位置uppe ...
- cb33a_c++_STL_算法_查找算法_(6)binary_search_includes
cb33a_c++_STL_算法_查找算法_(6)binary_search_includes//针对已序区间的查找算法,如set,multiset关联容器-自动排序binary_search(b,e ...
- cb32a_c++_STL_算法_查找算法_(5)adjacent_find
cb32a_c++_STL_算法_查找算法_(5)adjacent_findadjacent_find(b,e),b,begin(),e,end()adjacent_find(b,e,p),p-par ...
- cb31a_c++_STL_算法_查找算法_(4)find_first_of
cb31a_c++_STL_算法_查找算法_(4)find_first_offind_first_of(b,e,sb,se),sb,second begin, se,second end();find ...
- cb29a_c++_STL_算法_查找算法_(2)search_n
cb29a_c++_STL_算法_查找算法_(2)search_n//比如:连续查找连续的n个8search_n(b,e,c,v),迭代器b,begin(),e,end().连续的c个vpos=sea ...
- cb28a_c++_STL_算法_查找算法_(1)find_find_if
cb28a_c++_STL_算法_查找算法_(1)find_find_iffind() //线性查找,比较慢.pos1 = find(ilist.begin(), ilist.end(), 5);fi ...
- STL_算法_查找算法(lower_bound、upper_bound、equal_range)
C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) //全部容器适用(O(log(n))) 已序区间查找算法 lower_bound() //找第一个符合的 ...
- STL_算法_查找算法(find、find_if)
C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) find . find_if /**********************线性查找O(n) find(); find_if ...
- STL_算法_查找算法(binary_search、includes)
C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) 全部容器适用(O(log(n))) 已序区间查找算法 binary_search //二分查 ...
随机推荐
- mysql 的大文本存储TEXT & BLOB
TEXT & BLOB 一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR:而在保存较大文本时,通常会选择使用 TEXT 或者 BLOB,二者之间的主要差别是 BLOB 能 ...
- zookeeper安装部署步骤
安装步骤 本安装教程,采用zookeeper 3.6.1 装java 下载zk包,分发到各个机器 确定或创建一个zookeeper的数据存放路径,并在该路径下创建一个myid文件,其中设置当前zook ...
- LeetCode DFS搜索与回溯专题
DFS + 回溯专题 17. 电话号码的字母组合 迭代也可以实现搜索 循环改写dfs搜索的写法: 例如 C++写法 class Solution { public: vector<string& ...
- NO.1 MSP-ESP432P4111开箱
本人准备2020TI杯模拟电子邀请赛,预计参赛可能会使用TI平台,故从某宝购置一块MSP-ESP432P4111 LaunchPad为参赛做准备.TI官网40美刀,但我只能找国内二道贩子买,有点小贵& ...
- 剑指Offer之矩形覆盖
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 比如n=3时,2*3的矩形块有3种覆盖方法: 思路:与裴波拉 ...
- JavaScript几种继承方式的总结
1.原型链继承 直接将子类型的原型指向父类型的实例,即"子类型.prototype = new 父类型();",实现方法如下: //父类构造函数 function father(n ...
- 啪啪,打脸了!领导说:try-catch必须放在循环体外!
哈喽,亲爱的小伙伴们,技术学磊哥,进步没得说!欢迎来到新一期的性能解读系列,我是磊哥. 今天给大家带来的是关于 try-catch 应该放在循环体外,还是放在循环体内的文章,我们将从性能和业务场景分析 ...
- eclipse 界面复原
Windows-----Perspective-----Reset perspective
- Java实现第八届蓝桥杯国赛 数字划分
标题:数字划分 w星球的长老交给小明一个任务: 1,2,3-16 这16个数字分为两组. 要求: 这两组数字的和相同, 并且,两组数字的平方和也相同, 并且,两组数字的立方和也相同. 请你利用计算机的 ...
- Java实现 LeetCode 401 二进制手表
401. 二进制手表 二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59). 每个 LED 代表一个 0 或 1,最低位在右侧. 例如,上面的二进制手表 ...