equal_to Struct

Predikat biner yang melakukan operasi kesetaraan (operator==) pada argumennya.

Sintaks

template <class Type = void>
struct equal_to : public binary_function<Type, Type, bool>
{
    bool operator()(const Type& Left, const Type& Right) const;
};

// specialized transparent functor for operator==
template <>
struct equal_to<void>
{
    template <class T, class U>
    auto operator()(T&& Left, U&& Right) const
      ->  decltype(std::forward<T>(Left) == std::forward<U>(Right));
};

Parameter

Jenis, T, U
Jenis apa pun yang mendukung operator== yang mengambil operan dari jenis yang ditentukan atau disimpulkan.

Left
Operan kiri dari operasi kesetaraan. Templat yang tidak dispesialisasi mengambil argumen referensi lvalue jenis jenis. Templat khusus melakukan penerusan sempurna dari argumen referensi lvalue dan rvalue dari tipe T yang disimpulkan.

Kanan
Operan kanan dari operasi kesetaraan. Templat yang tidak dispesialisasi mengambil argumen referensi lvalue jenis jenis. Templat khusus melakukan penerusan sempurna dari argumen referensi lvalue dan rvalue dari tipe U yang disimpulkan.

Tampilkan Nilai

Hasil dari Left == Right. Templat khusus melakukan penerusan hasil yang sempurna, yang memiliki jenis yang dikembalikan oleh operator==.

Keterangan

Objek jenis Jenis harus sebanding dengan kesetaraan. Ini mengharuskan bahwa yang operator== didefinisikan pada kumpulan objek memenuhi sifat matematika dari hubungan kesetaraan. Semua jenis numerik dan pointer bawaan memenuhi persyaratan ini.

Contoh

// functional_equal_to.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>

using namespace std;

int main( )
{
   vector <double> v1, v2, v3 ( 6 );
   vector <double>::iterator Iter1, Iter2, Iter3;

   int i;
   for ( i = 0 ; i <= 5 ; i+=2 )
   {
      v1.push_back( 2.0 *i );
      v1.push_back( 2.0 * i + 1.0 );
   }

   int j;
   for ( j = 0 ; j <= 5 ; j+=2 )
   {
      v2.push_back( - 2.0 * j );
      v2.push_back( 2.0 * j + 1.0 );
   }

   cout << "The vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;

   cout << "The vector v2 = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
   cout << ")" << endl;

   // Testing for the element-wise equality between v1 & v2
   transform ( v1.begin( ),  v1.end( ), v2.begin( ), v3.begin ( ),
      equal_to<double>( ) );

   cout << "The result of the element-wise equal_to comparison\n"
      << "between v1 & v2 is: ( " ;
   for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
      cout << *Iter3 << " ";
   cout << ")" << endl;
}
The vector v1 = ( 0 1 4 5 8 9 )
The vector v2 = ( -0 1 -4 5 -8 9 )
The result of the element-wise equal_to comparison
between v1 & v2 is: ( 1 1 0 1 0 1 )