Condividi tramite


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

Vedere anche

Riferimenti

Libreria di modelli standard