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 //二分查 ...
随机推荐
- Java中的集合(二)单列集合顶层接口------Collection接口
Java中的集合(二)单列集合顶层接口------Collection接口 Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法.由于Iterab ...
- jupyter notebook 安装扩展nbextensions
安装nbextensions可提高jupyter notebook效率,安装步骤如下: 1.pip 方式安装: (gluon) [root@localhost ~]# pip install jupy ...
- go语言的主要特征
go语言主要特征 1.自动立即回收. 2.更丰富的内置类型. 3.函数多返回值. 4.错误处理. 5.匿名函数和闭包. 6.类型和接口. 7.并发编程. 8.反射. 9.语言交互性. golang文件 ...
- Linux kernel学习(序)
伟大的Linux kernel有几大重要模块: 1.文件系统(File System) 2.进程调度(Process Scheduler) 3.内存管理(Memory Management) 4.进程 ...
- EntityFramework数据持久化 Linq语法应用
Linq基础语法 LINQ概述 LINQ(Language Integrated Query,语言集成查询)提供了一种跨数据源和数据格式查询的统一模型. LINQ的组成: LINQ To Object ...
- Java实现 蓝桥杯 算法训练 字符串长度(IO无敌)
试题 算法训练 字符串长度 问题描述 输入一个字符串,输出其长度. 输入格式 输入一个字符串 输出格式 输出字符串长度 样例输入 一个满足题目要求的输入范例. HelloWorld 样例输出 10 数 ...
- Java实现 LeetCode 732 我的日程安排表 III(暴力 || 二叉树)
732. 我的日程安排表 III 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int end)方法 ...
- ASP.Net Web中Repeater怎么删除指定行
使用OnItemCommand事件 首先附上相关的代码 <asp:Repeater ID="Repeater1" runat="server" OnIte ...
- Java实现 蓝桥杯VIP 基础练习 龟兔赛跑预测
题目描述 话说这个世界上有各种各样的兔子和乌龟,但是 研究发现,所有的兔子和乌龟都有一个共同的特点--喜欢赛跑.于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔 ...
- 第五届蓝桥杯JavaC组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜年龄 题目描述 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍" ...