Condividi tramite


Struct greater

Predicato binario che esegue l'operazione maggiore di (operator>) sui relativi argomenti.

Sintassi

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

};

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

Parametri

Tipo, T, U
Qualsiasi tipo che supporta un operator> che accetta gli operandi dei tipi specificati o dedotti.

Left
Operando sinistro dell'operazione di maggiore di. Il modello non specifico accetta un argomento di riferimento lvalue di tipo Type. Il modello specializzato esegue l'inoltro perfetto degli argomenti di riferimento lvalue e rvalue di tipo T dedotto.

Right
Operando destro dell'operazione di maggiore di. Il modello non specifico accetta un argomento di riferimento lvalue di tipo Type. Il modello specializzato esegue l'inoltro perfetto degli argomenti di riferimento lvalue e rvalue di tipo U dedotto.

Valore restituito

Risultato di Left > Right. Il modello specializzato esegue un inoltro perfetto del risultato, con il tipo restituito da operator>.

Osservazioni:

Il predicato greater<>Typebinario fornisce un ordinamento debole rigoroso di un set di valori di elemento di tipo Type in classi di equivalenza, se e solo se questo tipo soddisfa i requisiti matematici standard per l'ordinamento. Le specializzazioni per qualsiasi tipo di puntatore producono un ordinamento totale degli elementi, in quanto tutti gli elementi di valori distinti vengono ordinati l'uno rispetto all'altro.

Esempio

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

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

   int i;
   for ( i = 0 ; i < 8 ; i++ )
   {
      v1.push_back( rand( ) );
   }

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

   // To sort in ascending order,
   // use default binary predicate less<int>( )
   sort( v1.begin( ), v1.end( ) );
   cout << "Sorted vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;

   // To sort in descending order,
   // specify binary predicate greater<int>( )
   sort( v1.begin( ), v1.end( ), greater<int>( ) );
   cout << "Resorted vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;
}
Original vector v1 = (41 18467 6334 26500 19169 15724 11478 29358)
Sorted vector v1 = (41 6334 11478 15724 18467 19169 26500 29358)
Resorted vector v1 = (29358 26500 19169 18467 15724 11478 6334 41)