cb29a_c++_STL_算法_查找算法_(2)search_n
cb29a_c++_STL_算法_查找算法_(2)search_n
//比如:连续查找连续的n个8
search_n(b,e,c,v),迭代器b,begin(),e,end().连续的c个v
pos=search_n(ideq.begin(), ideq.end(), 4, 3);
search_n(b,e,c,v,p) p,谓词参数,查找的规则(条件)
pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());
greater<int>(),预定义函数对象。
自己做谓词,需要用二元谓词,就是两个参数的。
特别注意:
该算法的第二种形式应该是:
search_n_if(b,e,c,p)//实际不能使用,委员会审查,未发现,估计是bug.
pos=search_n_if(ideq.begin(),ideq.end(),3,bind2nd(greater<int>(),6));//实际不能使用
等效于
pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());//这个可以。
distance算法
cout << "找到了连续的4个3: 当前位置:" << distance(ideq.begin(),pos)+1 << endl;
/*cb29a_c++_STL_算法_查找算法_(2)search_n
//比如:连续查找连续的n个8
search_n(b,e,c,v),迭代器b,begin(),e,end().连续的c个v
pos=search_n(ideq.begin(), ideq.end(), 4, 3); search_n(b,e,c,v,p) p,谓词参数,查找的规则(条件)
pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());
greater<int>(),预定义函数对象。
自己做谓词,需要用二元谓词,就是两个参数的。 特别注意:
该算法的第二种形式应该是:
search_n_if(b,e,c,p)//实际不能使用,委员会审查,未发现,估计是bug.
pos=search_n_if(ideq.begin(),ideq.end(),3,bind2nd(greater<int>(),6));//实际不能使用
等效于
pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());//这个可以。 distance算法
cout << "找到了连续的4个3: 当前位置:" << distance(ideq.begin(),pos)+1 << endl;
*/ #include <iostream>
#include <algorithm>
#include <deque>
#include <functional> using namespace std; int main()
{
deque<int> ideq;
for (int i = ; i <= ; ++i)
{
if (i == )
{
ideq.push_back(i);
ideq.push_back(i);
ideq.push_back(i);
//ideq.push_back(i);
}
else
ideq.push_back(i);
}
for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
cout << *iter << ' ';
cout << endl; deque<int>::iterator pos;
pos=search_n(ideq.begin(), ideq.end(), , );
if (pos != ideq.end())
{
cout << "找到了连续的4个3: 当前序号位置:" << distance(ideq.begin(),pos)+ << endl;
}
else
cout << "没有找到" << endl; cout << "连续的3个大于的6的数" << endl;
pos = search_n(ideq.begin(), ideq.end(), , , greater<int>());
//pos = search_n_if(ideq.begin(), ideq.end(), 3, bind2nd(greater<int>(), 6));//错误//实际不能使用
if (pos != ideq.end())
{
cout << "连续的3个大于的6的数,当前序号位置:" << distance(ideq.begin(), pos) + << endl;
}
else
cout << "没有找到" << endl; return ;
}
cb29a_c++_STL_算法_查找算法_(2)search_n的更多相关文章
- cb34a_c++_STL_算法_查找算法_(7)_lower_bound
cb34a_c++_STL_算法_查找算法_(7)_lower_bound//针对已序区间的查找算法,如set,multiset关联容器-自动排序lower_bound()--第一个可能的位置uppe ...
- cb33a_c++_STL_算法_查找算法_(6)binary_search_includes
cb33a_c++_STL_算法_查找算法_(6)binary_search_includes//针对已序区间的查找算法,如set,multiset关联容器-自动排序binary_search(b,e ...
- cb32a_c++_STL_算法_查找算法_(5)adjacent_find
cb32a_c++_STL_算法_查找算法_(5)adjacent_findadjacent_find(b,e),b,begin(),e,end()adjacent_find(b,e,p),p-par ...
- cb31a_c++_STL_算法_查找算法_(4)find_first_of
cb31a_c++_STL_算法_查找算法_(4)find_first_offind_first_of(b,e,sb,se),sb,second begin, se,second end();find ...
- cb30a_c++_STL_算法_查找算法_(3)search_find_end
cb30a_c++_STL_算法_查找算法_(3)search_find_endsearch()pos = search(ideq.begin(), ideq.end(), ilist.begin() ...
- cb28a_c++_STL_算法_查找算法_(1)find_find_if
cb28a_c++_STL_算法_查找算法_(1)find_find_iffind() //线性查找,比较慢.pos1 = find(ilist.begin(), ilist.end(), 5);fi ...
- STL_算法_查找算法(lower_bound、upper_bound、equal_range)
C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) //全部容器适用(O(log(n))) 已序区间查找算法 lower_bound() //找第一个符合的 ...
- STL_算法_查找算法(find、find_if)
C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) find . find_if /**********************线性查找O(n) find(); find_if ...
- STL_算法_查找算法(binary_search、includes)
C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) 全部容器适用(O(log(n))) 已序区间查找算法 binary_search //二分查 ...
随机推荐
- vue-cli中的index.html ,main.js , App.vue的关系
###发现不少小伙伴才刚开始接触到这个结构都被绕的迷糊,而发现很多人说的也不是那么准确,那么下面我来说一下是怎么回事### 1.首先我们来看看原生Vue中组件的写法, 我们按照vue-cli的结构按照 ...
- LNMP PHP升级脚本
升级PHP前,请确认你的网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本,具体可以去你使用的PHP程序的官网查询相关版本支持信息.v1.3及以后版本大部分情况下也可以进行降级操 ...
- CSS综合案例
代码示例:新闻页面: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Golang源码学习:调度逻辑(四)系统调用
Linux系统调用 概念:系统调用为用户态进程提供了硬件的抽象接口.并且是用户空间访问内核的唯一手段,除异常和陷入外,它们是内核唯一的合法入口.保证系统的安全和稳定. 调用号:在Linux中,每个系统 ...
- 工作中oracle常用操作
常用数据库操作 启动数据库监听器lsnrctl start 停止数据库监听器lsnrctl stop 登录oraclesqlplus / as sysdba启动oralcestartup;关闭orac ...
- [Android应用开发] 01.快速入门
前言 这一篇,主要是把之前[安卓基础]系列的东西,做一个总结和补充.并举了两个例子:电话拨号器.短信发送器做巩固,在此也参考了黑马训练营的教学大纲. Android项目的目录结构 Activity:应 ...
- Set接口中的HashSet,LinkedHashSet,TreeSet
TestSet package com.aff.coll; import java.util.Comparator; import java.util.HashSet; import java.uti ...
- 【补充说明】Gauge框架在JS中的简单应用
这里做一个总结 由于公司架构要用node来替代Java的部分服务,所以就研究了这个自动化测试框架:它可以很方便的测试我们的接口,而且还能使用断言[assert]来判断是否是我们预期的结果. 但是呢,由 ...
- 不可不知的辅助测试的Fiddler小技巧
在以前的博文中,时常有分享Fiddler的一些使用技巧,今天再贴下. Fiddler抓包工具使用详解 利用Fiddler拦截接口请求并篡改数据 Fiddler使用过程中容易忽略的小技巧 Mock测试, ...
- 【LINQ标准查询操作符总结】之聚合操符
C# 中的LINQ 提供了两种操作方式,查询表达式和查询操作符,所有的查询表达式都有对应的查操作符类替代,查询表达式有点“类” SQL,在代码中写SQL,总觉得不够“优雅”,使用查询操作符就显得“优 ...