std::less
来自cppreference.com
< cpp | utility | functional
| 定义于头文件 <functional>
|
||
| template< class T > struct less; |
(C++14 前) | |
| template< class T = void > struct less; |
(C++14 起) | |
进行比较的函数对象。调用类型 T 上的 operator< ,除非特化。
特化
std::less 的特化为任何指针类型产生严格全序,即使内建的 operator< 不如此。严格全序在 std::less 、 std::greater 、 std::less_equal 和 std::greater_equal 对该指针类型的特化间一致,且亦与对应的内建运算符( < 、 > 、 <= 及 >= )所施加的偏序一致。
|
若特化 |
(C++14 起) |
|
标准库提供
|
(C++14 起) |
成员类型
|
(C++20 前) | ||||||||||
成员函数
| operator() |
检查第一参数是否小于第二个 (公开成员函数) |
std::less::operator()
| bool operator()( const T& lhs, const T& rhs ) const; |
(C++14 前) | |
| constexpr bool operator()( const T& lhs, const T& rhs ) const; |
(C++14 起) | |
检查 lhs 是否小于 rhs 。
参数
| lhs, rhs | - | 要比较的值 |
返回值
若 lhs < rhs 则为 true ,否则为 false 。
异常
可能抛出实现定义的异常。
可能的实现
constexpr bool operator()(const T &lhs, const T &rhs) const { return lhs < rhs; } |
示例
运行此代码
#include <functional> #include <iostream> template <typename A, typename B, typename U = std::less<>> bool f(A a, B b, U u = U()) { return u(a, b); } int main() { std::cout << std::boolalpha; std::cout << f(5, 20) << '\n'; std::cout << f(100, 10) << '\n'; }
输出:
true false
参阅
| (C++11) |
提供基于所有者的,共享指针和弱指针的混合类型的排序 (类模板) |
| 实现 x > y 的函数对象 (类模板) |