C++ STL 各种搜索查找算法总结使用
//本程序示例主要演示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 各种搜索查找算法总结使用相关推荐
- STL常用的查找算法
常用的查找算法 adjacent_find() binary_search count() count_if() find() find_if() adjacent_find() 在iterator对 ...
- C++ STL 常用查找算法
C++ STL 常用查找算法 adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. ...
- c++中STL的常用算法---2(遍历算法,查找算法)
算法概述 算法主要由头文件组成 是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等 体积很小,只包括在几个序列容器上进行的简单运算的模板函数 定 ...
- C++STL常用查找算法
C++STL常用查找算法 学习目标 算法简介 find 功能描述 函数原型 示例 总结 find_if 功能描述 函数原型 示例 总结 adjacent_find 功能描述 函数原型 示例 总结 bi ...
- STL算法——常用查找算法(find、find_if、adjacent_find、binary_search、count、count_if)
5.2 常用查找算法 学习目标: 掌握常用的查找算法 算法简介: find //查找元素 find_if //按条件查找元素 adjacent_find //查找相邻重复元素 binary_searc ...
- 家族关系查询系统程序设计算法思路_七大查找算法(附C语言代码实现)
来自:Poll的笔记 - 博客园 链接:http://www.cnblogs.com/maybe2030/p/4715035.html 阅读目录 1.顺序查找 2.二分查找 3.插值查找 4.斐波那契 ...
- 【跟学C++】C++STL标准模板库——算法详细整理(上)(Study18)
文章目录 1.STL简介 2.STL算法分类及常用函数 2.1.非变序算法 2.1.1 计数算法(2个) 2.1.2 搜索算法(7个) 2.1.3 比较算法(2个) 3.总结 =========== ...
- leetcode中关于使用二分查找算法思想deal的题型
学习了二分查找的算法思想之后,再leetcode上写了一道常见的简单面试题,现在用博客记录一下我学习刷题的笔记! leetcode 题号69:Sqrt(x)(经典的面试题) 给你一个非负整数 x ,计 ...
- 【面试必读(编程基础)】几种查找算法
http://www.cnblogs.com/maybe2030/p/4715035.html?utm_source=tuicool&utm_medium=referral 查找是在大量的信息 ...
最新文章
- 女生学软件测试有哪些优势
- java在主程序修改函数输出,Java通过JNI调用CUDA
- UVA-136:Ugly Numbers
- C++:类的构造函数
- jsoup爬虫,爬取全站代码
- js获取浏览器版本或者类别
- AI 会替代程序员?超好用的自动补全代码工具 Deep TabNine!
- 使用代码形式配置Log4J日志框架
- 那桃林深处最美的风景
- vue组件弹出框点击显示隐藏
- python调用window dll和linux so例子
- libiconv_百度百科
- 初试锐捷交换机不同登录方式的密码设置
- SecureCRT资源下载安装
- 【数字IC验证快速入门】4、熟悉数字IC验证中常用的Linux基本操作
- 恢复icloud 微信无法连接服务器,从iCloud恢复,找回微信消息
- 过去分词和动词过去式区别
- 电子厂里撂了挑子,我默默自学起了Android|2021年中总结
- 设计一可控同步四进制可逆计数器, 其由输入X1,X2控制, 用D触发器和74153及必要的门电路实现
- 最详细PicGo(图床)加阿里云OSS实现图片自动上传