less_equal Struct
Predikat biner yang melakukan operasi kurang dari atau sama dengan (operator<=
) pada argumennya.
Sintaks
template <class Type = void>
struct less_equal : public binary_function <Type, Type, bool>
{
bool operator()(const Type& Left, const Type& Right) const;
};
// specialized transparent functor for operator<=
template <>
struct less_equal<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 atau sama dengan. 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 atau sama dengan. 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_equal
<>Type
biner 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_equal.cpp
// compile with: /EHsc
#define _CRT_RAND_S
#include <stdlib.h>
#include <vector>
#include <algorithm>
#include <functional>
#include <cstdlib>
#include <iostream>
int main( )
{
using namespace std;
vector <int> v1;
vector <int>::iterator Iter1;
vector <int>::reverse_iterator rIter1;
unsigned int randomNumber;
int i;
for ( i = 0 ; i < 5 ; i++ )
{
if ( rand_s( &randomNumber ) == 0 )
{
// Convert the random number to be between 1 - 50000
// This is done for readability purposes
randomNumber = ( unsigned int) ((double)randomNumber /
(double) UINT_MAX * 50000) + 1;
v1.push_back( randomNumber );
}
}
for ( i = 0 ; i < 3 ; i++ )
{
v1.push_back( 2836 );
}
cout << "Original vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
// To sort in ascending order,
// use the binary predicate less_equal<int>( )
sort( v1.begin( ), v1.end( ), less_equal<int>( ) );
cout << "Sorted vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
}
Original vector v1 = (31247 37154 48755 15251 6205 2836 2836 2836)
Sorted vector v1 = (2836 2836 2836 6205 15251 31247 37154 48755)