Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Двоичный предикат, выполняющий операцию меньшего значения (operator<) для его аргументов.
Синтаксис
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));
};
Параметры
Тип, T, U
Любой тип, поддерживающий operator<, принимающий операнды указанного или выводимого типа.
Left
Левый операнд в операции деления. Неспециализированный шаблон принимает ссылочный аргумент lvalue типа Type. Специализированный шаблон выполняет идеальную пересылку ссылочных аргументов lvalue и rvalue типа T.
Right
Правый операнд в операции "меньше чем". Неспециализированный шаблон принимает ссылочный аргумент lvalue типа Type. Специализированный шаблон идеально переадресует аргументы ссылочных аргументов lvalue и rvalue типа U.
Возвращаемое значение
Результат Left < Right. Специализированный шаблон выполняет точную пересылку результата типа, возвращаемого operator<.
Замечания
Двоичный предикат less<>Typeобеспечивает строгое слабое упорядочение набора значений элементов типа Type в классы эквивалентности, если и только если этот тип удовлетворяет стандартным математическим требованиям для того, чтобы быть упорядоченным. Специализации для любого типа указателя дают общее упорядочение элементов в том, что все элементы из различных значений упорядочиваются относительно друг друга.
Пример
// 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)