STL常用查找算法介绍
adjacent_find()
在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器。否则返回past-the-end。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
void play_adjacent_find()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(2);
v1.push_back(3);
v1.push_back(5);
vector<int>::iterator it = adjacent_find(v1.begin(), v1.end());
if (it == v1.end())
{
cout << "没有找到 重复的元素" << endl;
}
else
{
cout << *it << endl;
}
// 2
int index = distance(v1.begin(), it);
cout << index << endl;
// 1
}
int main()
{
play_adjacent_find();
return 0;
}
binary_search()
在有序序列中查找value,找到则返回true。注意:在无序序列中,不可使用。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
// binary_search是对排序好的进行查找
void play_binary_search()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
bool b = binary_search(v1.begin(), v1.end(), 7);
if (b) {
cout << "find success\n";
}
else {
cout << "find fail\n";
}
// find success
}
int main()
{
play_binary_search();
return 0;
}
count()
利用等于操作符,把标志范围内的元素与输入值比较,返回相等的个数。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
void play_count()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(3);
v1.push_back(7);
v1.push_back(9);
v1.push_back(3);
int cnt = count(v1.begin(), v1.end(), 3);
cout << "count of 3: " << cnt << endl;
// count of 3: 3
}
int main()
{
play_count();
return 0;
}
count_if()
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
bool GreaterThree(const int &a)
{
return a > 3;
}
void play_count_if()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(4);
v1.push_back(7);
v1.push_back(9);
v1.push_back(3);
int cnt = count_if(v1.begin(), v1.end(), GreaterThree);
cout << "count of greater 3: " << cnt << endl;
// count of greater 3: 3
}
int main()
{
play_count_if();
return 0;
}
find()
find: 利用底层元素的等于操作符,对指定范围内的元素与输入值进行比较。当匹配时,结束搜索,返回该元素的迭代器。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
void play_find()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(4);
v1.push_back(7);
v1.push_back(9);
v1.push_back(3);
vector<int>::iterator it = find(v1.begin(), v1.end(), 4);
if (it == v1.end()) {
cout << "find fail\n";
}
else {
cout << "find success\n";
}
// find success
}
int main()
{
play_find();
return 0;
}
find_if()
find_if: 使用输入的函数代替等于操作符执行find。返回被找到的元素的迭代器。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
bool GreaterThree(const int &a)
{
return a > 3;
}
void play_find_if()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(4);
v1.push_back(7);
v1.push_back(9);
v1.push_back(3);
vector<int>::iterator it = find_if(v1.begin(), v1.end(), GreaterThree);
if (it == v1.end()) {
cout << "find fail\n";
}
else {
cout << "find success\n";
cout << "value: " << *it << endl;
}
// find success
// value: 4
}
int main()
{
play_find_if();
return 0;
}
STL常用查找算法介绍的更多相关文章
- C++ STL 常用查找算法
C++ STL 常用查找算法 adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. ...
- STL常用排序算法介绍
merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列. #include <iostream> #include <cstdi ...
- 常用查找算法(Java)
常用查找算法(Java) 2018-01-22 1 顺序查找 就是一个一个依次查找 2 二分查找 二分查找(Binary Search)也叫作折半查找. 二分查找有两个要求, 一个是数列有序, 另一个 ...
- C++ STL 常用排序算法
C++ STL 常用排序算法 merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列. 例如: vecIntA,vecIntB,vecIntC是用ve ...
- C++ STL 常用遍历算法
C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了 ...
- C++ STL之查找算法
C++STL有好几种查找算法,但是他们的用法上有很多共同的地方: 1.除了binary_search的返回值是bool之外(查找的了返回true,否则返回false),其他所有的查找算法返回值都是一个 ...
- STL常用遍历算法for_each和transform的比较
for_each()和transform()算法比较 1)STL 算法 – 修改性算法 for_each() copy() copy_backward() transform() merge ...
- C语言实现常用查找算法——二分查找
#include<stdio.h> void insert_sort(int a[],int n); int binary_search(int a[],int x,int n); voi ...
- python实现常用查找算法
http://www.cnblogs.com/feixuelove1009/p/6148357.html
随机推荐
- postgresql添加字段
ALTER TABLE jiangan_config ADD COLUMN article text NOT NULL DEFAULT ''; pg_dump -s database_name -t ...
- ActionContext.getContext()用法
为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装,构造了 ...
- lldb po [$view recursiveDescription]; 打印视图层次
备忘: lldb 打印视图层次: 对某一个view,比如operationBgView po [operationBgView recursiveDescription];
- github pages + Hexo + 域名绑定搭建个人博客增强版
概述 前面我们用github pages + Hexo 搭建了一个简单版的个人博客系统,但是里面的内容单调,很多功能不够完善,所以我们需要对yelle 的主题进行优化和完善.基本搭建请访问:http: ...
- ECharts, PHP, MySQL, Ajax, JQuery 实现前后端数据可视化
ECharts 下载js代码 工作原理浅析 在项目中引入ECharts 后台处理 数据库端MySQL PHP端 JQuery Ajax处理 ECharts 端处理 前端全部代码 演示结果 总结 最近要 ...
- Unity3d导出场景地图寻路
Unity3d导出场景地图寻路(金庆的专栏)Unity3d中用无渲染的透明盒子摆出地面和阻档区域. this.renderer.enabled = false;所有这些盒子设为Navig ...
- 【完整的App项目】颖火虫笔记
这是本人花大概一个星期开发出来的一款App,这是一款类似印象笔记的App,随时记录您的生活点滴.首先说一下自己为何要开发这款App,因为自己手机系统自带的笔记应用功能太low,界面不够漂亮,所以自己就 ...
- JAVA面向对象-----匿名内部类
匿名内部类 匿名内部类:就是没有类名字的内部类. 匿名内部类作用:简化内部类书写. 匿名内部类的前提:必须继承一个父类或者是实现一个接口. 匿名内部类的格式: new 父类或者接口(){ 执行代码-. ...
- Android ListView中Item点击事件失效解决方案
欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布 ...
- CONFIGURE ADFS 3.0 WITH SHAREPOINT 2013
http://blogit.create.pt/miguelmoreno/2014/11/14/configure-adfs-3-0-with-sharepoint-2013/