Aracılığıyla paylaş


logical_not Yapısı

Bağımsız değişkeninde mantıksal olmayan işlemi (operator!) gerçekleştiren önceden tanımlanmış bir işlev nesnesi.

Sözdizimi

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

// specialized transparent functor for operator!
template <>
struct logical_not<void>
{
  template <class Type>
  auto operator()(Type&& Left) const
     -> decltype(!std::forward<Type>(Left));
};

Parametreler

Türü
Belirtilen veya çıkarsanan türün işlenenini alan bir operator! destekleyen herhangi bir tür.

Left
Mantıksal olmayan işlemin 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ü tür lvalue ve rvalue başvuru bağımsız değişkenlerini mükemmel bir şekilde iletir.

İade Değeri

sonucu.!Left Özelleştirilmiş şablon, tarafından operator!döndürülen türe sahip olan sonucun mükemmel iletilmesine sahiptir.

Örnek

// functional_logical_not.cpp
// compile with: /EHsc
#include <deque>
#include <algorithm>
#include <functional>
#include <iostream>

int main( )
{
   using namespace std;
   deque<bool> d1, d2 ( 7 );
   deque<bool>::iterator iter1, iter2;

   int i;
   for ( i = 0 ; i < 7 ; i++ )
   {
      d1.push_back((bool)((i % 2) != 0));
   }

   cout << boolalpha;    // boolalpha I/O flag on

   cout << "Original deque:\n d1 = ( " ;
   for ( iter1 = d1.begin( ) ; iter1 != d1.end( ) ; iter1++ )
      cout << *iter1 << " ";
   cout << ")" << endl;

   // To flip all the truth values of the elements,
   // use the logical_not function object
   transform( d1.begin( ), d1.end( ), d2.begin( ),logical_not<bool>( ) );
   cout << "The deque with its values negated is:\n d2 = ( " ;
   for ( iter2 = d2.begin( ) ; iter2 != d2.end( ) ; iter2++ )
      cout << *iter2 << " ";
   cout << ")" << endl;
}
Original deque:
d1 = ( false true false true false true false )
The deque with its values negated is:
d2 = ( true false true false true false true )