not_equal_to Yapısı
Bağımsız değişkenlerinde eşitsizlik işlemini (operator!=
) gerçekleştiren ikili koşul.
Sözdizimi
template <class Type = void>
struct not_equal_to : public binary_function<Type, Type, bool>
{
bool operator()(const Type& Left, const Type& Right) const;
};
// specialized transparent functor for operator!=
template <>
struct not_equal_to<void>
{
template <class T, class U>
auto operator()(T&& Left, U&& Right) const
-> decltype(std::forward<T>(Left) != std::forward<U>(Right));
};
Parametreler
Tür, T, U
Belirtilen veya çıkarsanan türlerin işlenenlerini alan bir destekleyen herhangi bir operator!=
tür.
Left
Eşitsizlik işleminin sol işleneni. Belirtilmemiş şablon, Tür türünde bir lvalue başvuru bağımsız değişkenini alır. Özelleştirilmiş şablon, T türünde lvalue ve rvalue başvuru bağımsız değişkenlerinin mükemmel bir şekilde iletilmesine neden olur.
Right
Eşitsizlik işleminin doğru işleneni. Belirtilmemiş şablon, Tür türünde bir lvalue başvuru bağımsız değişkenini alır. Özelleştirilmiş şablon, çıkarılmıştır türü U olan lvalue ve rvalue başvuru bağımsız değişkenlerinin mükemmel iletilmesine yöneliktir.
Dönüş Değeri
sonucu.Left != Right
Özelleştirilmiş şablon, tarafından operator!=
döndürülen türe sahip olan sonucun mükemmel iletilmesine sahiptir.
Açıklamalar
Tür türündeki nesneler eşitlik ile karşılaştırılabilir olmalıdır. Bu, operator!=
nesne kümesinde tanımlanan öğesinin denklik ilişkisinin matematiksel özelliklerini karşılar. Tüm yerleşik sayısal ve işaretçi türleri bu gereksinimi karşılar.
Örnek
// functional_not_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 ( ),
not_equal_to<double>( ) );
cout << "The result of the element-wise not_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 not_equal_to comparison
between v1 & v2 is: ( 0 0 1 0 1 0 )