C++ の any_of は find_if とほぼ一緒 ― 2020年05月21日 20時54分43秒
find_if はイテレータを返すが、any_of は真偽値を返す。any_of は find_if とほぼ同等で、真偽値の判別に特化した関数の様だ。find_if で代用可能な関数が find_if より後の C++11 で追加された。
折角なので、find_if と any_of で同じことをやってみる。
find_if はイテレータを返すので値を出力。
#include <vector>
#include <iostream>
#include <algorithm>
int main()
{
auto negative = []( int i ){ return i < 0; };
std::vector< int > ones = { 1, 2, 3, 4, -2, 5, 0, -1 };
auto any = std::any_of( ones.begin(), ones.end(), negative );
auto find = std::find_if( ones.begin(), ones.end(), negative );
std::cout << "any_of returned " << any << std::endl;
std::cout << "find_if returned " << *find << std::endl;
}
真偽値が欲しければ、ones.end() と比較する。
% ./a.out
any_of returned 1
find_if returned -2
前回。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2020/05/21/9249183/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。