Struct greater_equal
Predicato binario che esegue l'operazione maggiore o uguale a (operator>=
) sui relativi argomenti.
Sintassi
template <class Type = void>
struct greater_equal : public binary_function <Type, Type, bool>
{
bool operator()(const Type& Left, const Type& Right) const;
};
// specialized transparent functor for operator>=
template <>
struct greater_equal<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 o uguale a. 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 o uguale a. 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_equal
<>Type
binario 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_equal.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;
v1.push_back( 6262 );
v1.push_back( 6262 );
for ( i = 0 ; i < 5 ; 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_equal<int>( )
sort( v1.begin( ), v1.end( ), greater_equal<int>( ) );
cout << "Resorted vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
}
Original vector v1 = (6262 6262 41 18467 6334 26500 19169)
Sorted vector v1 = (41 6262 6262 6334 18467 19169 26500)
Resorted vector v1 = (26500 19169 18467 6334 6262 6262 41)