简单的程序诠释C++ STL算法系列之十一:search_n
来源:互联网 发布:论文灌水知乎 编辑:程序博客网 时间:2024/05/14 19:08
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.
/******************************************************************* * Copyright (C) Jerry Jiang * File Name : search_n.cpp * Author : Jerry Jiang * Create Time : 2011-10-11 22:23:47 * Mail : jbiaojerry@gmail.com * Blog : http://blog.csdn.net/jerryjbiao * Description : 简单的程序诠释C++ STL算法系列之十一 * 非变易算法 : 重复元素子序列搜索search_n ******************************************************************/#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;}
*******************************************************************************************************************************
C++经典书目索引及资源下载:http://blog.csdn.net/jerryjbiao/article/details/7358796
********************************************************************************************************************************
- 简单的程序诠释C++ STL算法系列之十一:search_n
- 简单的程序诠释C++ STL算法系列之一:for_each
- 简单的程序诠释C++ STL算法系列之一:for_each
- 简单的程序诠释C++ STL算法系列: find & find_if
- 简单的程序诠释C++ STL算法系列之一:for_each
- 简单的程序诠释C++ STL算法系列之二:find
- 简单的程序诠释C++ STL算法系列之三:find_if
- 简单的程序诠释C++ STL算法系列之四:adjacent_find
- 简单的程序诠释C++ STL算法系列之五:find_first_of
- 简单的程序诠释C++ STL算法系列之六:count
- 简单的程序诠释C++ STL算法系列之七:count_if
- 简单的程序诠释C++ STL算法系列之八:mismatch
- 简单的程序诠释C++ STL算法系列之九:equal
- 简单的程序诠释C++ STL算法系列之十:search
- 简单的程序诠释C++ STL算法系列之十二:find_end
- 简单的程序诠释C++ STL算法系列之十三:copy
- 简单的程序诠释C++ STL算法系列之十四:copy_backward
- 简单的程序诠释C++ STL算法系列之十五:swap
- myeclipse遇到打不开xml的问题
- centos忘记密码怎么办?
- gdb调试程序不能显示线程创建信息问题
- Oracle存储过程 MySql存储过程 SqlServer存储过程 Oracle 触发器语法及实例
- delphi bmp scanline
- 简单的程序诠释C++ STL算法系列之十一:search_n
- 使用VBS程序自动配置计算机IP地址(改进版)
- android获取手机屏幕大小
- 使用宏定义,简单实现jni函数命名
- 数据结构算法
- C#类,类成员访问修饰符
- VPN加密算法大全
- Jsp页面使用JavaBeans
- Samsung Announced First Smart TV App Developed Using Adobe AIR