Algorithm学习之any_of

MSDN上的解释:

any_of

Visual Studio 2010

Returns true when a condition is present at least once in the specified range of elements.

template<class InputIterator, class UnaryPredicate>
    bool any_of(
        InputIterator _First,
        InputIterator _Last,
        UnaryPredicate _Comp
    );

Parameters

_First

An input iterator that indicates where to start checking a range of elements for a condition.

_Last

An input iterator that indicates the end of the range of elements to check for a condition.

_Comp

A condition to test for. This is provided by a user-defined predicate function object. The predicate defines the condition to be satisfied by the element being tested. A predicate takes a single argument and returns true or false.

Return Value

Returns true if the condition is detected at least once in the indicated range, false if the condition is never detected.

Remarks

The template function returns true only if, for some N in the range

[0, _Last - _First), the predicate _Comp(*(_First + N)) is true.

Requirements

Header: <algorithm>

Namespace: std

any_of与all_of类似,不同点在于,all_of是所有元素都满足条件才返回true。any_of是只要有一个元素满足条件就返回true。

程序示例如下:

// any_of.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

bool IsOdd( int elem )
{
    if( elem%2 != 0)
        return true;
    else
        return false;
}
int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> v1(5);
    vector<int>::size_type i;

    for( i=0 ; i<5; i++)
    {
        v1[i] = i;
    }    

    if( any_of( v1.begin( ), v1.end( ), IsOdd ) )
        cout << " all the elements int the vector v1 are odd! " << endl;
    else
        cout << " not all the elements int the vector  v1 are odd! " << endl;

    vector<int> v2(5);

    for(vector<int>::iterator iter = v2.begin() ; iter != v2.end(); ++iter)
    {
        *iter = 2;
    }

    if( any_of( v2.begin( ), v2.end( ), IsOdd ) )
        cout << " all the elements int the vector v2 are odd! " << endl;
    else
        cout << " not all the elements int the vector v2 are odd! " << endl;
    system("pause");
}

程序运行结果如下:

时间: 2024-10-06 16:32:35

Algorithm学习之any_of的相关文章

algorithm 学习之路(一) for_each

对于algorithm里面的函数使用不算多,但是用过之后才发现,之前写过很多多余的代码,所以打算系统的学习使用下algorithm里的东西,这是第一篇,从algorithm顺序学习,第一个就是for_each. 先看下for_each的定义: template <class _InputIterator, class _Function> inline _LIBCPP_INLINE_VISIBILITY _Function for_each(_InputIterator __first, _I

形式化验证工具(PAT)Perterson Algorithm学习

今天学习一下Perterson Algorithm. 这个算法是使用三个变量来实现并发程序的互斥性算法. 具体看一下代码: Peterson算法是一个实现互斥锁的并发程序设计算法,核心就是三个标志位是怎样控制两个方法对临界区的访问,这个算法设计的想当精妙,我刚开始看的时候就被绕了一下. 算法使用两个控制变量flag与turn. 其中flag[n]的值为真,表示ID号为n的进程希望进入该临界区. 标量turn保存有权访问共享资源的进程的ID号. 注意到如果进程P0和P1并发,那么两者中必然会有一个

Algorithm学习之all_of学习

all_of Visual Studio 2010 Returns true when a condition is present at each element in the given range. 当所有在指定的范围内所有元素都满足指定条件的时候返回true. template<class InputIterator, class Predicate> bool all_of( InputIterator _First, InputIterator _Last, BinaryPredi

Algorithm学习之adjacent_find学习

从MSDN下查阅得到: adjacent_find Visual Studio 2010 Searches for two adjacent elements that are either equal or satisfy a specified condition. 找到两个相邻的元素,这两个相邻的元素或者相等或者满足特定的条件. template<class ForwardIterator> ForwardIterator adjacent_find( ForwardIterator _

boost字符串算法

boost::algorithm简介 2007-12-08 16:59 boost::algorithm提供了很多字符串算法,包括: 大小写转换: 去除无效字符: 谓词: 查找: 删除/替换: 切割: 连接: 我们用写例子的方式来了解boost::algorithm能够为我们做些什么. boost::algorithm学习#include <boost/algorithm/string.hpp>using namespace std;using namespace boost; 一:大小写转换

Machine Learning~初探

最近接触了机器学习,感觉很梦幻,能实现的我的梦想,看网上说的花天酒地的难,但是想做就要做下去,毅然决然的跳入这个大坑. 让我们慢慢来,先怼它几个概念. 监督学习 我们给出了关于每个数据的"正确答案".监督学习必须知道预测什么,即目标变量的分类信息. 监督学习中又有常见的两种问题回归问题和分类问题. 回归问题 回归一词指的是我们根据之前的数据预测出一个准确的连续输出值. 分类问题 当我们想要预测离散的输出值. 几个常用术语 m:训练样本 y's:输出特征/变量 x's:输入特征/变量 (

每周学算法/读英文/知识点心得分享 1.28 - 2.1

每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西! Algorithm: 学习算法 题目:String to Integer (atoi) 解题过程: 这题主要考虑异常情况,比如空字符串,开头 +/- ,非数字字符,空格,最大最小边界值处理.学到一个Char转Int技巧就是直接用字符减去‘0’获得差值就是数字. 第三次提交通过的. 解法:https://raw.githubusercontent.com/chy9966

每周学算法/读英文/知识点心得分享 2.4 - 2.8

每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西! Algorithm: 学习算法 题目:https://leetcode.com/problems/zigzag-conversion/ 解题过程: 刚开始没看懂什么意思,看了两遍,明白是把字符串从上至下按照锯齿形排列,然后按行输出. 根据题目提示可以继续做一下延伸,把1-20 按 n=5 自己排列一下. 这种题一般有规律,找出要打印的字符在字符串里的下标,收集在一起就

每周学算法/读英文/知识点心得分享 3.4 - 3.8

每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西! Algorithm: 学习算法 题目:Generate Parentheses 题目大意:给出n对小括号,求出括号匹配的情况,用列表存储并返回,例如:n=3时,答案应为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 解