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 ;
}

最新文章

  1. iOS开发——高级篇——流水布局UICollectionViewFlowLayout的基本使用
  2. 打开QQ会话
  3. javascript中关于日期和时间的基础知识
  4. SSH实例(1)
  5. myeclipse显示行号
  6. mac os 10.10上安装my eclipse显示virtual memory不足,解决方案
  7. C# 根据IP查询地址归属地
  8. Java学习笔记——泛型
  9. EFCore数据库迁移命令整理
  10. tomcat9 点击bin目录下的startup.bat一闪而过
  11. udp_connect函数
  12. matplotlib各图形绘制
  13. jdk8中关于操作集合的一些新特性,遍历和排序操作
  14. git 用法---成功添加一个文件到github
  15. personal project
  16. U深度U盘启动盘制作教程
  17. 如何搭建Packetbeat性能监控
  18. sping mvc+uploadify 上传文件大小控制3部曲
  19. RabbitMQ--Publish/Subscribe(三)
  20. Python 2.7.9 Demo - 019.01.CRUD oracle by cx_Oracle

热门文章

  1. springboot中yml常用配置
  2. C#用Linq对列表/集合进查询
  3. 快服务常见TOP3审核雷区,再不过审就要崩溃啦!
  4. [JavaWeb基础] 003.JAVA访问Mysql数据库
  5. SRAM电路工作原理
  6. Verilog - ABS代码重构
  7. 题解 P5329 【[SNOI2019]字符串】
  8. RocketMQ系列(一)基本概念
  9. (Java实现)洛谷 P1093 奖学金
  10. Java实现 LeetCode 475 供暖器