C++的STL之search_n
来源:互联网 发布:装修设计图软件 编辑:程序博客网 时间:2024/04/29 08:31
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。
重复元素子序列搜索search_n算法:搜索序列中是否有一系列元素值均为某个给定值的子序列,它有如下两个函数原型,分别在迭代器区间[first, last)上搜索是否有count个连续元素,其值均等于value(或者满足谓词判断binary_pred的条件),返回子序列首元素的迭代器,或last以表示没有重复元素的子序列。
函数原型:
- template<class ForwardIterator1, class Diff2, class Type>
- ForwardIterator1 search_n(
- ForwardIterator1 _First1,
- ForwardIterator1 _Last1,
- Size2 _Count,
- const Type& _Val
- );
- template<class ForwardIterator1, class Size2, class Type, class BinaryPredicate>
- ForwardIterator1 search_n(
- ForwardIterator1 _First1,
- ForwardIterator1 _Last1,
- Size2 _Count,
- const Type& _Val,
- BinaryPredicate _Comp
- );
-
示例程序:
搜索向量容器ivect = {1,8,8,8,4,,4,3}中有三个连续元素为8,没有四个连续元素8,以及有三个连续元素的两倍为16.
-
-
-
-
-
-
-
-
-
-
-
- #include <algorithm>
- #include <vector>
- #include <iostream>
-
- bool twice(const int para1, const int para2)
- {
- return 2 * para1 == para2;
- }
-
- using namespace std;
-
- int main()
- {
- vector<int> ivect;
- ivect.push_back(1);
- ivect.push_back(8);
- ivect.push_back(8);
- ivect.push_back(8);
- ivect.push_back(4);
- ivect.push_back(4);
- ivect.push_back(3);
-
- vector<int>::iterator iLocation;
- iLocation = search_n(ivect.begin(), ivect.end(), 3, 8);
- if (iLocation != ivect.end())
- {
- cout << "在ivect中找到3个连续的元素8" << endl;
- }
- else
- {
- cout << "在ivect中没有3个连续的元素8" << endl;
- }
-
- iLocation = search_n(ivect.begin(), ivect.end(), 4, 8);
- if (iLocation != ivect.end())
- {
- cout << "在ivect中找到4个连续的元素8" << endl;
- }
- else
- {
- cout << "在ivect中没有4个连续的元素8" << endl;
- }
-
- iLocation = search_n(ivect.begin(), ivect.end(), 2, 4);
- if (iLocation != ivect.end())
- {
- cout << "在ivect中找到2个连续的元素4" << endl;
- }
- else
- {
- cout << "在ivect中没有2个连续的元素4" << endl;
- }
-
- iLocation = search_n(ivect.begin(), ivect.end(), 3, 16, twice);
- if (iLocation != ivect.end())
- {
- cout << "在ivect中找到3个连续元素的两倍为16" << endl;
- }
- else
- {
- cout << "在ivect中没有3个连续元素的两倍为16" << endl;
- }
- return 0;
- }
0 0
- C++的STL之search_n
- c++之STL(13) STL 算法 - 查找算法(2)search_n() search_n(b, e, c, v) search_n(b, e, c, v, p)
- STL 之search,search_n,sort,binary_search
- STL 之search,search_n,sort,binary_search
- 简单的程序诠释C++ STL算法系列之十一:search_n
- search_n
- search_n
- STL 源码剖析 算法 stl_algo.h -- search_n
- STL algorithm算法search,search_n(52)
- C++ STL 算法:查找算法(2) search_n
- C++STL之string的用法总结
- C++STL之string类的使用
- [C++::STL]之vector的用法
- [C++::STL]之map的用法
- [C++::STL]之set的用法
- [C++::STL]之stcak的用法
- C++STL之multimap
- C++STL之string
- Servlet基础
- phpstorm主题设置
- fastjson 使用方法
- spring session redis跨域共享session的总结
- 后台返回数据在前台弹出框要求换行
- C++的STL之search_n
- 谷歌C++代码规范
- week3-NO.515. Find Largest Value in Each Tree Row
- Linux系统入门----读书笔记
- 防抖函数和节流函数小列
- Add Two Numbers
- Android 6.0 权限申请机制处理
- Elasticsearch操作数据后马上更新的办法
- 教你怎样用Oracle方便地查看报警日志错误