C++競プロ学習日記(仮)

( 学習記録であり解説Blogではないです )

std::equal_to|C++|STL

std::equal_to の覚書

C++日本語リファレンスによると下記の通り↓
メンバ変数を持たず、状態を保持しないとのこと。

equal_toクラスは、等値比較を行う関数オブジェクトである。*1

equal_to< 型 >()( left, right ); で、指定した型による left == right の比較が行われ、
bool 値( 0 / 1 )が返ってくる様です。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    //int
    for( int i = 0; i < 3; i++ )
    {
        cout << i << ":" << equal_to<int>()( i, 2 ) << endl;
    }
    cout << endl;
    //string
    vector<string> vc{ "NO","YES","NO" };
    for( int i = 0; i < 3; i++ )
    {
        cout << i << ":" << equal_to<string>()( vc[ i ], "YES" ) << endl;
    }
    return 0;
}

実行結果はこちら

#include <bits/stdc++.h>
using namespace std;
int main()
{
    //int
    auto f = [ = ]( int x ){ return x == 2; };
    for( int i = 0; i < 5; i++ )
    {
        cout << i << ":" << f( i ) << endl;
    }
    cout << endl;
    //string
    vector<string> vc{ "NO","YES","NO" };
    auto f2 = [ = ]( string x ){ return x == "YES"; };
    for( int i = 0; i < 3; i++ )
    {
        cout << i << ":" << f2( vc[ i ] ) << endl;
    }
    return 0;
}

実行結果はこちら

ラムダでも同じ感じで書けました◎
(単にラムダを書く練習です...)

std::equal_to の使い所はまだ思い浮かばないのですけど、
使うとしたら、std::all_of *2 との合わせ技で使う例を見たので、
vector 等に入った要素の比較判定とかで使えそうではあります。