Struct less
Un predicato binario che esegue l'operazione minore (operator<) sui suoi argomenti.
template<class Type = void>
struct less : public binary_function <Type, Type, bool>
{
bool operator()(
const Type& Left,
const Type& Right
) const;
};
// specialized transparent functor for operator<
template<>
struct less<void>
{
template<class Type1, class Type2>
auto operator()(Type1&& Left, Type2&& Right) const
-> decltype(std::forward<Type1>(Left)
< std::forward<Type2>(Right));
};
Parametri
Type, Type1, Type2
Qualsiasi tipo che supporti operator< che accetta gli operandi dei tipi specificati di derivati.Left
L'operando a sinistra dell'operazione minore. Il modello non specializzato accetta un argomento di riferimento a lvalue di tipo Type. Il modello specializzato perfeziona l'inoltro degli argomenti di riferimento a rvalue e lvalue di tipo derivato Type1.Right
L'operando a destra dell'operazione minore. Il modello non specializzato accetta un argomento di riferimento a lvalue di tipo Type. Il modello specializzato perfeziona l'inoltro degli argomenti di riferimento a rvalue e lvalue di tipo derivato Type2.
Valore restituito
Il risultato di Left < Right. Il modello specializzato perfeziona l'inoltro del risultato, il cui tipo è restituito da operator<.
Note
Il predicato binario less<Type> fornisce un ordine debole rigido di un set di valori degli elementi di tipo Type nelle classi di equivalenza, se e solo se questo tipo soddisfa i requisiti matematici standard per poter essere ordinato. Le specializzazioni per qualsiasi tipo di puntatore restituiscono un ordine totale di elementi, dove tutti gli elementi dei valori distinti vengono ordinati in base agli altri.
Esempio
// functional_less.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>
struct MyStruct {
MyStruct(int i) : m_i(i){}
bool operator < (const MyStruct & rhs) const {
return m_i < rhs.m_i;
}
int m_i;
};
int main() {
using namespace std;
vector <MyStruct> v1;
vector <MyStruct>::iterator Iter1;
vector <MyStruct>::reverse_iterator rIter1;
int i;
for ( i = 0 ; i < 7 ; i++ )
v1.push_back( MyStruct(rand()));
cout << "Original vector v1 = ( " ;
for ( Iter1 = v1.begin() ; Iter1 != v1.end() ; Iter1++ )
cout << Iter1->m_i << " ";
cout << ")" << endl;
// To sort in ascending order,
sort( v1.begin( ), v1.end( ), less<MyStruct>());
cout << "Sorted vector v1 = ( " ;
for ( Iter1 = v1.begin() ; Iter1 != v1.end() ; Iter1++ )
cout << Iter1->m_i << " ";
cout << ")" << endl;
}
Output
Original vector v1 = ( 41 18467 6334 26500 19169 15724 11478 )
Sorted vector v1 = ( 41 6334 11478 15724 18467 19169 26500 )
Requisiti
Intestazione: <funzionale>
Spazio dei nomi: std