//本程序示例主要演示C++STL中各种搜索函数的使用
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;//模板函数,用于初始化容器的值
template<class T> void FillValue(T& vect,int first,int last){if(last>=first){for(int i=first;i<=last;++i){vect.insert(vect.end(),i);}}
}//用于for_each循环中打印容器中的数值
void print(const int elem){cout<<elem<<" ";
}bool checkEven(int elem,bool check){if(check){return elem%2==0;}else{return elem%2==1;}
}int main()
{//find()和find_if()vector<int> myvect;FillValue(myvect,1,10);for_each(myvect.begin(),myvect.end(),print);cout<<endl;vector<int>::iterator pos1;pos1=find(myvect.begin(),myvect.end(),5);cout<<"元素值等于5的位置为: "<<distance(myvect.begin(),pos1)+1<<endl;vector<int>::iterator pos2;pos2=find_if(myvect.begin(),myvect.end(),bind2nd(greater<int>(),3)); //返回数值大于3的位置cout<<"数值大于3的位置为: "<<distance(myvect.begin(),pos2)+1<<endl;cout<<endl;//search_npos1=search_n(myvect.begin(),myvect.end(),4,3);  //是否有4个3if(pos1==myvect.end()){cout<<"没有4个连续等于3的元素"<<endl;}pos2=search_n(myvect.begin(),myvect.end(),4,3,greater<int>());  //4个大于3的元素的起始位置cout<<"4个大于3的元素的起始位置为:"<<distance(myvect.begin(),pos2)+1<<endl;cout<<endl;//searchvector<int> subvect;FillValue(subvect,3,5);for_each(myvect.begin(),myvect.end(),print);cout<<endl;for_each(subvect.begin(),subvect.end(),print);cout<<endl;pos1=search(myvect.begin(),myvect.end(),subvect.begin(),subvect.end());  //查找子串在主串中出现的位置cout<<"子串在主串中的位置为:"<<distance(myvect.begin(),pos1)+1<<endl;bool check[3]={true,false,true};pos2=search(myvect.begin(),myvect.end(),check,check+3,checkEven); //满足偶数、奇数、偶数条件的查找cout<<"满足'偶、奇、偶'顺序子串的起始位置:"<<distance(myvect.begin(),pos2)+1<<endl;cout<<endl;//find_first_ofFillValue(myvect,2,6);for_each(myvect.begin(),myvect.end(),print);cout<<endl;for_each(subvect.begin(),subvect.end(),print);cout<<endl;pos1=find_first_of(myvect.begin(),myvect.end(),subvect.begin(),subvect.end());  //查找子串在主串中第一次出现的位置cout<<"子串在主串中第一次出现的位置是:"<<distance(myvect.begin(),pos1)+1<<endl;vector<int>::reverse_iterator pos3;pos3=find_first_of(myvect.rbegin(),myvect.rend(),subvect.begin(),subvect.end());  //查找子串在主串中最后一次出现的位置cout<<"子串在主串中最后一次出现的位置是:"<<distance(myvect.begin(),pos3.base())+1<<endl;return 0;
}

C++ STL 各种搜索查找算法总结使用相关推荐

  1. STL常用的查找算法

    常用的查找算法 adjacent_find() binary_search count() count_if() find() find_if() adjacent_find() 在iterator对 ...

  2. C++ STL 常用查找算法

    C++ STL 常用查找算法 adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. ...

  3. c++中STL的常用算法---2(遍历算法,查找算法)

    算法概述 算法主要由头文件组成 是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等 体积很小,只包括在几个序列容器上进行的简单运算的模板函数 定 ...

  4. C++STL常用查找算法

    C++STL常用查找算法 学习目标 算法简介 find 功能描述 函数原型 示例 总结 find_if 功能描述 函数原型 示例 总结 adjacent_find 功能描述 函数原型 示例 总结 bi ...

  5. STL算法——常用查找算法(find、find_if、adjacent_find、binary_search、count、count_if)

    5.2 常用查找算法 学习目标: 掌握常用的查找算法 算法简介: find //查找元素 find_if //按条件查找元素 adjacent_find //查找相邻重复元素 binary_searc ...

  6. 家族关系查询系统程序设计算法思路_七大查找算法(附C语言代码实现)

    来自:Poll的笔记 - 博客园 链接:http://www.cnblogs.com/maybe2030/p/4715035.html 阅读目录 1.顺序查找 2.二分查找 3.插值查找 4.斐波那契 ...

  7. 【跟学C++】C++STL标准模板库——算法详细整理(上)(Study18)

    文章目录 1.STL简介 2.STL算法分类及常用函数 2.1.非变序算法 2.1.1 计数算法(2个) 2.1.2 搜索算法(7个) 2.1.3 比较算法(2个) 3.总结  =========== ...

  8. leetcode中关于使用二分查找算法思想deal的题型

    学习了二分查找的算法思想之后,再leetcode上写了一道常见的简单面试题,现在用博客记录一下我学习刷题的笔记! leetcode 题号69:Sqrt(x)(经典的面试题) 给你一个非负整数 x ,计 ...

  9. 【面试必读(编程基础)】几种查找算法

    http://www.cnblogs.com/maybe2030/p/4715035.html?utm_source=tuicool&utm_medium=referral 查找是在大量的信息 ...

最新文章

  1. 女生学软件测试有哪些优势
  2. java在主程序修改函数输出,Java通过JNI调用CUDA
  3. UVA-136:Ugly Numbers
  4. C++:类的构造函数
  5. jsoup爬虫,爬取全站代码
  6. js获取浏览器版本或者类别
  7. AI 会替代程序员?超好用的自动补全代码工具 Deep TabNine!
  8. 使用代码形式配置Log4J日志框架
  9. 那桃林深处最美的风景
  10. vue组件弹出框点击显示隐藏
  11. python调用window dll和linux so例子
  12. libiconv_百度百科
  13. 初试锐捷交换机不同登录方式的密码设置
  14. SecureCRT资源下载安装
  15. 【数字IC验证快速入门】4、熟悉数字IC验证中常用的Linux基本操作
  16. 恢复icloud 微信无法连接服务器,从iCloud恢复,找回微信消息
  17. 过去分词和动词过去式区别
  18. 电子厂里撂了挑子,我默默自学起了Android|2021年中总结
  19. 设计一可控同步四进制可逆计数器, 其由输入X1,X2控制, 用D触发器和74153及必要的门电路实现
  20. 最详细PicGo(图床)加阿里云OSS实现图片自动上传

热门文章

  1. python 菜鸟-Python3 列表
  2. python兼职程序员工资-没想到,学会Python即使不做程序员都能月入过万!
  3. mac地址容量的作用_IP地址冲突网络故障排查案例
  4. 创业冲突的五种解决方法是_当创始合伙人发生冲突时,最好的解决方法4和5
  5. c语言怎样存放学生信息,C语言共用体存放学生信息
  6. LeetCode 392 判断子序列
  7. 基于HEVC 的UHD(超高清 4K)视频的主观质量评价
  8. 计算机人员简历英语,计算机专业英文个人简历范文
  9. RocketMQ安装使用
  10. ORACLE中null的排序问题