greater Yapısı
Bağımsız değişkenlerinde büyüktür işlemini (operator>
) gerçekleştiren ikili koşul.
Sözdizimi
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));
};
Parametreler
Tür, T, U
Belirtilen veya çıkarsanan türlerin işlenenlerini alan bir destekleyen herhangi bir operator>
tür.
Left
Büyüktür 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
Büyüktür 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.
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
İkili koşulgreater
<>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_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)