std::all_of, std::any_of, std::none_of
提供:cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Defined in header <algorithm>
|
||
| template< class InputIt, class UnaryPredicate > bool all_of( InputIt first, InputIt last, UnaryPredicate p ); |
(1) | (C + + 11以来) |
| template< class InputIt, class UnaryPredicate > bool any_of( InputIt first, InputIt last, UnaryPredicate p ); |
(2) | (C + + 11以来) |
| template< class InputIt, class UnaryPredicate > bool none_of( InputIt first, InputIt last, UnaryPredicate p ); |
(3) | (C + + 11以来) |
単項述語かどうかをチェックし、範囲内のすべての要素に対して
2) p戻りtrue[first, last).Original:
Checks if unary predicate
p returns true for all elements in the range [first, last).The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
単項述語かどうかをチェックする範囲内で、少なくとも1つの要素に対する
3) p戻りtrue[first, last).Original:
Checks if unary predicate
p returns true for at least one element in the range [first, last).The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
単項述語かどうかをチェックする範囲内の要素を持たないため
p戻りtrue[first, last).Original:
Checks if unary predicate
p returns true for no elements in the range [first, last).The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目次 |
[編集] パラメータ
| first, last | - | 検討する要素の範囲
Original: the range of elements to examine The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |||||||||
| p | - | unary predicate . The signature of the predicate function should be equivalent to the following:
The signature does not need to have const &, but the function must not modify the objects passed to it. | |||||||||
| Type requirements | |||||||||||
-InputIt must meet the requirements of InputIterator.
| |||||||||||
[編集] 値を返します
1)truetrueそれ以外の場合は、範囲内のすべての要素に対して単項述語を返しfalse場合。戻りtrue範囲が空の場合は.
2) Original:
true if unary predicate returns true for all elements in the range, false otherwise. Returns true if the range is empty.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
truetrueそうでなければ、範囲内で、少なくとも1つの要素に対する単項述語を返しfalse場合。戻りfalse範囲が空の場合は.
3) Original:
true if unary predicate returns true for at least one element in the range, false otherwise. Returns false if the range is empty.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
truetrueそれ以外の場合は、範囲内の要素を持たないために単項述語を返しfalse場合。戻りtrue範囲が空の場合は.
Original:
true if unary predicate returns true for no elements in the range, false otherwise. Returns true if the range is empty.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] 複雑
せいぜい
last - 述語のfirstアプリケーションOriginal:
At most
last - first applications of the predicateThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] 可能な実装
| First version |
|---|
template< class InputIt, class UnaryPredicate > bool all_of(InputIt first, InputIt last, UnaryPredicate p) { for (; first != last; ++first) { if (!p(*first)) return false; } return true; } |
| Second version |
template< class InputIt, class UnaryPredicate > bool any_of(InputIt first, InputIt last, UnaryPredicate p) { for (; first != last; ++first) { if (p(*first)) return true; } return false; } |
| Third version |
template< class InputIt, class UnaryPredicate > bool none_of(InputIt first, InputIt last, UnaryPredicate p) { for (; first != last; ++first) { if (p(*first)) return false; } return true; } |
[編集] 例
#include <vector> #include <numeric> #include <algorithm> #include <iterator> #include <iostream> #include <functional> int main() { std::vector<int> v(10, 2); std::partial_sum(v.cbegin(), v.cend(), v.begin()); std::cout << "Among the numbers: "; std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; if (std::all_of(v.cbegin(), v.cend(), [](int i){ return i % 2 == 0; })) { std::cout << "All numbers are even\n"; } if (std::none_of(v.cbegin(), v.cend(), std::bind(std::modulus<int>(), std::placeholders::_1, 2))) { std::cout << "None of them are odd\n"; } struct DivisibleBy { const int d; DivisibleBy(int n) : d(n) {} bool operator()(int n) const { return n % d == 0; } }; if (std::any_of(v.cbegin(), v.cend(), DivisibleBy(7))) { std::cout << "At least one number is divisible by 7\n"; } }
Output:
Among the numbers: 2 4 6 8 10 12 14 16 18 20 All numbers are even None of them are odd At least one number is divisible by 7