- algorithm[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class InputIterator, class Predicate>
bool all_of(InputIterator first,
InputIterator last,
Predicate pred); // (1) C++11
template <class InputIterator, class Predicate>
constexpr bool all_of(InputIterator first,
InputIterator last,
Predicate pred); // (1) C++20
template <class ExecutionPolicy, class ForwardIterator, class Predicate>
bool all_of(ExecutionPolicy&& exec,
ForwardIterator first,
ForwardIterator last,
Predicate pred); // (2) C++17
}
イテレータ範囲[first, last)
の全ての要素が条件を満たすかを判定する。
[first,last)
が空であったり、[first,last)
内の全てのイテレータ i
について pred(*i)
が true
である場合は true
を返し、そうでない場合は false
を返す。
最大で last - first
回 pred
を実行する。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> v = { 3, 1, 4 };
std::cout << std::boolalpha;
// 全ての要素が 5 より小さいか
bool result1 = std::all_of(v.begin(), v.end(), [](int x) { return x < 5; });
std::cout << result1 << std::endl;
// 全ての要素が 1 であるか
bool result2 = std::all_of(v.begin(), v.end(), [](int x) { return x == 1; });
std::cout << result2 << std::endl;
}
- std::all_of[color ff0000]
true
false
template <class InputIterator, class Predicate>
bool all_of(InputIterator first, InputIterator last, Predicate pred) {
for ( ; first != last; ++first)
if (!bool(pred(*first))) return false;
return true;
}
- C++11
- Clang: 3.0 [mark verified]
- GCC: 4.4.7 [mark verified]
- ICC: ??
- Visual C++: 2010 [mark verified], 2012 [mark verified], 2013 [mark verified], 2015 [mark verified]