Aracılığıyla paylaş


less_equal Yapısı

Bağımsız değişkenlerinde küçük veya eşittir işlemini (operator<=) gerçekleştiren ikili koşul.

Sözdizimi

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

// specialized transparent functor for operator<=
template <>
struct less_equal<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
Küçüktür veya eşittir 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
Küçüktür veya eşittir işleminin sağ 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.

İade 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

İkili koşulless_equal<>Type, türdeki öğe değerleri kümesinin katı bir zayıf sıralamasını denklik sınıflarına sağlar; ancak bu tür bu kadar sıralı olmak için standart matematiksel gereksinimleri karşılıyorsa. Herhangi bir işaretçi türü için uzmanlıklar, benzersiz değerlerin tüm öğelerinin birbirine göre sıralanması için öğelerin toplam sıralamasını verir.

Örnek

// functional_less_equal.cpp
// compile with: /EHsc
#define _CRT_RAND_S
#include <stdlib.h>
#include <vector>
#include <algorithm>
#include <functional>
#include <cstdlib>
#include <iostream>

int main( )
{
   using namespace std;
   vector <int> v1;
   vector <int>::iterator Iter1;
   vector <int>::reverse_iterator rIter1;
   unsigned int randomNumber;

   int i;
   for ( i = 0 ; i < 5 ; i++ )
   {
      if ( rand_s( &randomNumber ) == 0 )
      {
         // Convert the random number to be between 1 - 50000
         // This is done for readability purposes
         randomNumber = ( unsigned int) ((double)randomNumber /
            (double) UINT_MAX * 50000) + 1;

         v1.push_back( randomNumber );
      }
   }
   for ( i = 0 ; i < 3 ; i++ )
   {
      v1.push_back( 2836 );
   }

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

   // To sort in ascending order,
   // use the binary predicate less_equal<int>( )
   sort( v1.begin( ), v1.end( ), less_equal<int>( ) );
   cout << "Sorted vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;
}
Original vector v1 = (31247 37154 48755 15251 6205 2836 2836 2836)
Sorted vector v1 = (2836 2836 2836 6205 15251 31247 37154 48755)