C++ 学习之查找算法adjacent_find(相邻重复查找)、binary_search(二分法查找)
1、 adjacent_find
功能描述:
- 查找相邻重复元素
函数原型:
- adjacent_find(iterator beg, iterator end);
// 查找相邻重复元素,返回相邻元素的第一个位置的迭代器
// beg 开始迭代器
// end 结束迭代器
2、 binary_search
功能描述:
- 查找指定元素是否存在
函数原型:
- bool binary_search(iterator beg, iterator end, value);
// 查找指定的元素,查到 返回true 否则false
// 注意: 在无序序列中不可用
// beg 开始迭代器
// end 结束迭代器
// value 查找的元素
3、 示例代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;/*返回bool类型的函数对象(仿函数)称为谓词*/class Greater
{public:bool operator()(int v)//如果operator()接受一个参数,那么叫做一元谓词{return v < 5;//返回小于5的元素}
};void test01()//find_if条件查找算法:内置数据类型
{vector<int> v;v.push_back(10);v.push_back(11);v.push_back(1);v.push_back(2);//find_if算法:查找符合条件的元素,前两个参数是区间迭代器,最后一个参数是谓词,也就是查找规则条件//返回值:如果找到了,返回这个元素迭代器的位置,如果未找到,返回迭代器end();//Greater()是匿名函数对象,因为普通用法是需要用类实例化出一个对象的,这里没有名字,所以说是匿名对象vector<int>::iterator ret = find_if(v.begin(), v.end(), Greater());if (v.end() == ret){cout << "元素未找到" << endl;}else{cout << "找到元素为:" << *ret << endl;}
}//adjacent 临近的
void test02()//查找相邻重复元素,两个关键词:相邻 重复 (一般开发中用的比较少,可能会在面试题中出现)
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(2);v.push_back(4);v.push_back(4);vector<int>::iterator it = adjacent_find(v.begin(), v.end());if (it == v.end()){cout << "无相邻元素" << endl;}else{cout << "相邻重复元素为:" << *it << endl;//输出 3}
}//注意:查找的容器中元素必须是有序的,无序数组可能会出错,这也是二分法的要求
void test03()//二分查找算法,查找容器中是否存在某个值
{vector<int> v;for (int i = 0;i < 10;i++){v.push_back(i);}bool ret = binary_search(v.begin(), v.end(), 8);//返回值不是迭代器,而是bool类型,有就返回真,反之假if (ret == true){cout << "元素存在" << endl;}else{cout << "元素不存在" << endl;}}int main()
{// test02();// adjacent_find 相邻重复元素查找test03();// binary_search 二分法查找某个元素return 0;
}
C++ 学习之查找算法adjacent_find(相邻重复查找)、binary_search(二分法查找)相关推荐
- 我所知道查找算法之斐波拉契(黄金分割法)查找
作者前言 大家好,我是阿濠,今篇内容跟大家分享的是查找算法之斐波那契(黄金分割法)查找,很高兴分享到segmentfault与大家一起学习交流,初次见面请大家多多关照,一起学习进步. 一.斐波那契数列 ...
- python二分查找算法_如何使用python的二分查找算法
如何使用python的二分查找算法 发布时间:2020-11-18 09:27:29
- 查找算法之三:斐波那契查找(黄金分割法)
斐波那契查找 思路分析 代码实现 思路分析 FibonacciSearch(也叫黄金分割法)的思路分析: ==>实际上,这也是一个基于二分查找(也就是折半查找)的查找算法.只是在计算mid 的值 ...
- STL算法——常用查找算法(find、find_if、adjacent_find、binary_search、count、count_if)
5.2 常用查找算法 学习目标: 掌握常用的查找算法 算法简介: find //查找元素 find_if //按条件查找元素 adjacent_find //查找相邻重复元素 binary_searc ...
- 【算法学习】四 二分法查找(折半法或者折半查找)
前言 社长,一个爱学习,爱分享的程序猿,始终相信,付出总会有回报的.知识改变命运,学习成就未来.爱拼才会赢! 程序猿学社的GitHub,已整理成相关技术专刊,欢迎Star:. https://gith ...
- list 查找_五千字长文带你学习 二分查找算法
点击上方"与你一起学算法",选择"星标"公众号 重磅干货,第一时间送达 二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使 ...
- C++ STL 常用查找算法
C++ STL 常用查找算法 adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. ...
- STL常用的查找算法
常用的查找算法 adjacent_find() binary_search count() count_if() find() find_if() adjacent_find() 在iterator对 ...
- c++中STL的常用算法---2(遍历算法,查找算法)
算法概述 算法主要由头文件组成 是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等 体积很小,只包括在几个序列容器上进行的简单运算的模板函数 定 ...
最新文章
- 查找局域网中的DHCP服务器
- 3D模型初探(人体运动学)
- jBPM 流程设计器和查看【包括Web形式】的总结
- 第13天:提取方法对象
- mysql5.7.20非安装版_mysql 5.7.20\5.7.21 免安装版安装配置教程
- Matlab | 数字信号处理:FIR滤波器结构的实现
- zabbix监控防火墙和交换机
- 浮动—春联(文字竖直排列)
- 细说说傲腾与哈娜的那些事儿
- 关于C中字符串的输入和输出使用的函数不同所造成的影响
- [02]基于webservice权限系统
- C++视频和讲义下载地址
- 数学系之必备参考书+数学系教材推荐
- Go语言-测试与性能分析
- 开发者案例 | 灵活高效涂鸦社区PaaS,助力社区智能化升级
- WIFI手机使用正常电脑使用卡顿解决方案
- Spring加载时报错处理
- 景区厕所污水处理有哪些问题?
- MacOS Ventura 13.0 (22A380) 正式版带 OC 0.8.5 and winPE 双分区原版黑苹果镜像
- pyechart省份名称重叠解决方法
热门文章
- 创建TLS客户端凭据时发生严重错误,内部错误状态为10013
- 【MATLAB高等数学】十种常用二次曲面及其matlab绘制
- 晒晒名企大公司的工资收入
- 没撑过2020,我从外包公司离职了
- SugarCRM Professional:适合中小企业的CRM客户管理平台
- Linux进程网络流量统计方法及实现
- 单片机 + 4G模块7S1上有人云平台自己添加变量进行温度采集,将数据发送有人云平台
- 2011.3.12 (ULE)
- R语言实战:机器学习与数据分析源代码6(最终弹)
- FCA-FineReport认证考试题(2022-10-31)