std::all_of, std::any_of, std::none_of
提供: cppreference.com
![]() | このページは、Google 翻訳を使って英語版から機械翻訳されました。 翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
ヘッダ <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 | - | 単項述語。 述語関数のシグネチャは以下と同等なものであるべきです。 bool pred(const Type &a); シグネチャが const& を持つ必要はありませんが、関数は渡されたオブジェクトを変更してはなりません。 |
型の要件 | ||
-InputIt は 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.
[編集]可能な実装
1つめのバージョン |
---|
template<class InputIt, class UnaryPredicate >bool all_of(InputIt first, InputIt last, UnaryPredicate p){for(; first != last;++first){if(!p(*first))returnfalse;}returntrue;} |
2つめのバージョン |
template<class InputIt, class UnaryPredicate >bool any_of(InputIt first, InputIt last, UnaryPredicate p){for(; first != last;++first){if(p(*first))returntrue;}returnfalse;} |
3つめのバージョン |
template<class InputIt, class UnaryPredicate >bool none_of(InputIt first, InputIt last, UnaryPredicate p){for(; first != last;++first){if(p(*first))returnfalse;}returntrue;} |
[編集]例
Run this code
#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 {constint 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";}}
出力:
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