C++ any_of用法學習

lypbendlf發表於2024-06-04

轉自:https://www.cnblogs.com/pandamohist/p/13854504.html,https://cplusplus.com/reference/algorithm/any_of/

1.介紹

template <class InputIterator, class UnaryPredicate>  
bool any_of (InputIterator first, InputIterator last, UnaryPredicate pred);

區間[開始, 結束)中是否至少有一個元素都滿足判斷式p,只要有一個元素滿足條件就返回true,否則返回true。

函式功能:

template<class InputIterator, class UnaryPredicate>
  bool any_of (InputIterator first, InputIterator last, UnaryPredicate pred)
{
  while (first!=last) {// 在區間內查詢
    if (pred(*first)) return true;// 符合條件返回true
    ++first;
  }
  return false;
}

2.例子

// any_of example
#include <iostream>     // std::cout
#include <algorithm>    // std::any_of
#include <array>        // std::array

int main () {
  std::array<int,7> foo = {0,1,-1,3,-3,5,-5};

  if ( std::any_of(foo.begin(), foo.end(), [](int i){return i<0;}) )
    std::cout << "There are negative elements in the range.\n";

  return 0;
}

// 輸出
There are negative elements in the range.

可能會丟擲異常。 另外還有:

all_of:區間[開始, 結束)中是否所有的元素都滿足判斷式p,所有的元素都滿足條件返回true,否則返回false。

none_of:區間[開始, 結束)中是否所有的元素都不滿足判斷式p,所有的元素都不滿足條件返回true,否則返回false。