常用STL算法2_查找
来源:互联网 发布:java 判断字符串相等 编辑:程序博客网 时间:2024/06/01 07:30
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <vector>#include <set>#include <list>#include <algorithm>#include <functional>#include <string>#include <iterator> //输出流using namespace std;//谓词1bool FindEquelNum1(int &num1, int &num2){ return (num1 == num2)?true:false;}//谓词2struct FindEquelNum2{public: FindEquelNum2(int n) { m_num = n; } bool operator()(int &num1, int &num2) { if ((num1 == num2) && (num1 == m_num)) return true; else return false; }private: int m_num;};void main071_adjacent_find(){ vector<int> vecInt; vecInt.push_back(1); vecInt.push_back(2); vecInt.push_back(2); vecInt.push_back(4); vecInt.push_back(5); vecInt.push_back(5); //1. adjacent_find: find first matching successor //vector<int>::iterator it = adjacent_find(vecInt.begin(), vecInt.end());//默认找第一个 ok //vector<int>::iterator it = adjacent_find(vecInt.begin(), vecInt.end(),FindEquelNum1);////谓词1 ok //2. find first satisfying _Pred with successor vector<int>::iterator it = adjacent_find(vecInt.begin(), vecInt.end(), FindEquelNum2(5));//找到满足条件的第一个//谓词2 ok if (it == vecInt.end()) { cout<<"not find"<<endl; } else { cout<<"找到的值为:"<<*it<<endl; int dis = distance(vecInt.begin(), it); cout<<"distance:"<<dis<<endl; }}//二分法void main072_binary_search(){ set<int> setInt; setInt.insert(3); setInt.insert(1); setInt.insert(7); setInt.insert(5); setInt.insert(9); /* bool binary_search(_FwdIt _First, _FwdIt _Last, const _Ty& _Val) { // test if _Val equivalent to some element, using operator< _First = _STD lower_bound(_First, _Last, _Val); return (_First != _Last && !(_Val < *_First)); } */ bool bFind = binary_search(setInt.begin(),setInt.end(),5); if (bFind) { cout<<"binary_search succ"<<endl; } else { cout<<"binary_search fail"<<endl; }}//利用等于操作符,把标志范围内的元素与输入值比较,返回相等的个数void main073_count(){ vector<int> vecInt; vecInt.push_back(1); vecInt.push_back(2); vecInt.push_back(2); vecInt.push_back(4); vecInt.push_back(5); vecInt.push_back(5); /* count(_InIt _First, _InIt _Last, const _Ty& _Val) { // count elements that match _Val _DEBUG_RANGE(_First, _Last); return (_Count_np(_Unchecked(_First), _Unchecked(_Last), _Val)); } typename iterator_traits<_InIt>::difference_type _Count_np(_InIt _First, _InIt _Last, const _Ty& _Val) { // count elements that match _Val typename iterator_traits<_InIt>::difference_type _Count = 0; for (; _First != _Last; ++_First) if (*_First == _Val) ++_Count; return (_Count); } */ int num = count(vecInt.begin(), vecInt.end(), 5); cout<<"num:"<<num<<endl;}bool GreatNum(int &num){ return (num > 3);}void main074_count_if(){ vector<int> vecInt; vecInt.push_back(1); vecInt.push_back(2); vecInt.push_back(2); vecInt.push_back(4); vecInt.push_back(5); vecInt.push_back(5); /* typename iterator_traits<_InIt>::difference_type count_if(_InIt _First, _InIt _Last, _Pr _Pred) { // count elements satisfying _Pred _DEBUG_RANGE(_First, _Last); _DEBUG_POINTER(_Pred); return (_Count_if(_Unchecked(_First), _Unchecked(_Last), _Pred)); } */ int num = count_if(vecInt.begin(), vecInt.end(), GreatNum); cout<<"num:"<<num<<endl;}void main075_find(){ vector<int> vecInt; vecInt.push_back(1); vecInt.push_back(3); vecInt.push_back(5); vecInt.push_back(7); vecInt.push_back(9); /* _InIt find(_InIt _First, _InIt _Last, const _Ty& _Val) { // find first matching _Val _DEBUG_RANGE(_First, _Last); return (_Rechecked(_First, _Find(_Unchecked(_First), _Unchecked(_Last), _Val))); } */ vector<int>::iterator it = find(vecInt.begin(), vecInt.end(), 5); cout<<*it<<endl; int dis = distance(vecInt.begin(), it); cout<<"dis:"<<dis<<endl;}void main076_find_if(){ vector<int> vecInt; vecInt.push_back(1); vecInt.push_back(3); vecInt.push_back(5); vecInt.push_back(7); vecInt.push_back(9); /* _InIt find_if(_InIt _First, _InIt _Last, _Pr _Pred) { // find first satisfying _Pred _DEBUG_RANGE(_First, _Last); _DEBUG_POINTER(_Pred); return (_Rechecked(_First, _Find_if(_Unchecked(_First), _Unchecked(_Last), _Pred))); } */ vector<int>::iterator it = find_if(vecInt.begin(), vecInt.end(), GreatNum); cout<<*it<<endl; int dis = distance(vecInt.begin(), it); cout<<"dis:"<<dis<<endl; cout<<"******找出大于3的元素及个数********"<<endl; vector<int>::iterator it2 = vecInt.begin(); int total_cnt = 0; int dis2 = 0; for (;it2 != vecInt.end(); it2++) { it2 = find_if(it2, vecInt.end(), GreatNum); dis = distance(vecInt.begin(), it2); cout<<"location:"<<dis<<" elem:"<<*it2<<endl; total_cnt++; } cout<<"total_cnt:"<<total_cnt<<endl;}int main(){ //main071_adjacent_find(); //main072_binary_search(); //main073_count(); //main074_count_if(); //main075_find(); main076_find_if(); cout<<"\nhello"<<endl; system("pause"); return 0;}
0 0
- 常用STL算法2_查找
- stl常用算法_查找相关
- 常用的STL查找算法
- STL常用查找算法介绍
- 常用的 STL 查找算法
- 常用的 STL 查找算法
- 常用的STL查找算法
- 常用的STL查找算法
- stl的string的典型操作_初始化_遍历_连接_和字符指针转化_查找替换_删除_插入_常用算法
- STL算法------查找2
- stl常用算法_算法和生成
- STL常用的查找算法(13)
- stl常用算法_排序相关
- stl常用算法_集合运算
- 常用STL算法1_遍历
- 常用STL算法3_排序
- 常用STL算法6_集合
- stl常用算法_拷贝和替换相关
- 一个工作分配的算法解析
- 中断控制器
- DeepLearning tutorial(2)机器学习算法在训练过程中保存参数
- 两个方法解决DZ(Discuz ! x3.2 )论坛安装模板不是正版应用的问题
- Kubernetes 1.6新特性系列 | 高级调度
- 常用STL算法2_查找
- SVCHOST启动服务实战
- 文章标题
- 98. Validate Binary Search Tree
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
- 浅谈微信smali注入
- sqlite 数据类型
- Less -8
- 【IMWeb训练营作业】- 作业3:仿readhub.me