Bagikan melalui


lebih sedikit Struct

Predikat biner yang melakukan operasi kurang dari (operator<) pada argumennya.

Sintaks

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 T, class U>
    auto operator()(T&& Left, U&& Right) const
        -> decltype(std::forward<T>(Left) <std::forward<U>(Right));
};

Parameter

Jenis, T, U
Jenis apa pun yang mendukung operator< yang mengambil operan dari jenis yang ditentukan atau disimpulkan.

Left
Operan kiri dari operasi yang kurang dari itu. Templat yang tidak dispesialisasi mengambil argumen referensi lvalue jenis jenis. Templat khusus melakukan penerusan sempurna dari argumen referensi lvalue dan rvalue dari tipe T yang disimpulkan.

Kanan
Operan kanan dari operasi yang kurang dari itu. Templat yang tidak dispesialisasi mengambil argumen referensi lvalue jenis jenis. Templat khusus melakukan penerusan sempurna dari argumen referensi lvalue dan rvalue dari tipe U yang disimpulkan.

Tampilkan Nilai

Hasil dari Left < Right. Templat khusus melakukan penerusan hasil yang sempurna, yang memiliki jenis yang dikembalikan oleh operator<.

Keterangan

Predikat less<>Typebiner menyediakan urutan yang lemah yang ketat dari sekumpulan nilai elemen jenis Jenis ke dalam kelas kesetaraan, jika dan hanya jika jenis ini memenuhi persyaratan matematika standar untuk diurutkan begitu. Spesialisasi untuk jenis pointer apa pun menghasilkan urutan total elemen, di mana semua elemen nilai yang berbeda diurutkan sehubungan satu sama lain.

Contoh

// 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;
}
Original vector v1 = (41 18467 6334 26500 19169 15724 11478)
Sorted vector v1 = (41 6334 11478 15724 18467 19169 26500)