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
随机推荐
- 独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
最近一年的工作,有很大的比重在做云平台的事情,简单来说,就是为公司内用户提供一个PaaS,用户可以在我们的云平台上方便的将单机服务程序扩展为多实例程序,以平台服务化的方式对外提供.在这里简单分享一下. ...
- Weblogic 12c 集群环境搭建
本文是在windows7操作系统下配置的,jdk版本1.7 ,weblogic版本12.1.3.0.0. 搭建集群前的规划 其中AdminServer是总控制端,server1.server2.ser ...
- Linux 高性能服务器编程——TCP协议详解
问题聚焦: 本节从如下四个方面讨论TCP协议: TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流 TCP状态转移过程:TCP连接的任意一 ...
- SceneKit:简单的3D游戏场景搭建
SceneKit是Apple用来开发休闲3D游戏的框架,不同于底层的OpenGL库,你仅仅需要很少的代码就可以快速看到实际的3D场景效果.下面简单的聊聊搭建一个3D游戏场景需要做的事情. 首先你必须用 ...
- 有奖试读—Windows PowerShell实战指南(第2版)
为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...
- 2.7、Android Studio使用翻译编辑器本地化UI
如果你的应用支持多语言,你需要合理的管理你的翻译的string资源.Android Studio 提供了翻译编辑器来使查看和管理翻译的资源更加容易. 关于翻译编辑器 翻译后的资源在你的项目里保存在不同 ...
- Oracle采购模块中的多组织访问控制(MOAC)
1. 概述 从Release12开始启用多组织访问控制功能,将允许用户在一个单独的职责中访问一个或者多个经营单位(OU-Operation Units)的数据.这个功能允许用户在一个可共享服务的 ...
- Android的ANR详解(原因和方案)
ANR的定义 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框 ...
- Android初级教程之内容提供者获取联系人信息
内容提供折详细理论知识请参考之前的博文:http://blog.csdn.net/qq_32059827/article/details/51646513 这里新建了三个联系人信息,通过查看系统联系人 ...
- Android进阶(七)数据存储
Android 数据存储 1访问资源文件 直接将文件保存在设备的内部存储. 默认情况下,保存到内部存储的文件为私有的,其他应用程序不能访问它们,当用户卸载应用程序时,所保存的文件也一并删除. 1.1 ...