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
随机推荐
- java记事本开发
今天我想要分享的是一个用java写的一个记事本程序.我知道现在市面上有各种各样的记事本了,但是我发现有的写的功能不够完善,或者是代码层次结构不够清晰,有的甚至看了之后云里雾里的,有的还不乏了非常明显的 ...
- Android的5层平台架构
Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建.下图所示为 Android 平台的主要组件. Android 软件栈 Linux 内核 Android 平台的基础 ...
- Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52835829 前言:上篇中,&l ...
- 【安卓开发】Android为什么选择binder
Binder (Android技术内幕): 在上面这些可供选择的方式中,Android使用得最多也最被认可的还是Binder机制. 为什么会选择Binder来作为进程之间的通信机制呢?因为Binder ...
- SQLite 删除表(http://www.w3cschool.cc/sqlite/sqlite-drop-table.html)
SQLite 删除表 SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据.索引.触发器.约束和该表的权限规范. 使用此命令时要特别注意,因为一旦一个表被删除,表中所有信息也将永 ...
- 【安卓开发】Facebook工程师是如何改进他们Android客户端的
原文出处: Facebook 译文出处:penkzhou 欢迎分享原创到伯乐头条 作为世界上最大的社交网络,Facebook的Android客户端面临着各种各样的使用环境(地理环境.Andro ...
- 基于CAS实现单点登录(SSO):工作原理
工作中使用到了SSO,网上看到了这个博客的一系列文章感觉不错,转载收藏 源地址http://blog.csdn.net/tch918/article/details/19930037 系列文章的第一篇 ...
- ROS(indigo)MoveIt!控制ABB RobotStudio 5.6x 6.0x中机器人运动
Gazebo以及相关参考文献,参考: ROS(indigo)ABB机器人MoveIt例子 这里需要配置RobotStudio,请参考ROS官网教程.下面列出要点: window端配置结束后,在Ub ...
- Java进阶(四十)Java类、变量、方法修饰符讲解
Java进阶(四十)Java类.变量.方法修饰符讲解 Java类修饰符 abstract: 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. final: 将一个类生命为最终(即非继承类) ...
- iOS中 UITableViewCell cell划线那些事 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 在开发中经常遇到cell分割线显示不全或者想自定义线的宽高等; 最近总结了一下,希望帮到大家: 1.不想划线怎么办? Table ...