std::less
定义于头文件
<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 起) |
成员类型
类型 | 定义 |
result_type (C++17 中弃用) |
bool |
first_argument_type (C++17 中弃用) |
T |
second_argument_type (C++17 中弃用) |
T |
成员函数
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; }
|
示例
1 #include <functional> 2 #include <iostream> 3 4 template <typename A, typename B, typename U = std::less<int>> 5 bool f(A a, B b, U u = U()) 6 { 7 return u(a, b); 8 } 9 10 int main() 11 { 12 std::cout << std::boolalpha; 13 std::cout << f(5, 20) << '\n'; 14 std::cout << f(100, 10) << '\n'; 15 }
输出:
true
false
以上是在网上查的std::less用法。实际使用时,比如
std::map<uint64_t,Eigen::Vector2i, std::less<uint64_t>
这里第三个参数的作用为,定义map中key值的排序规则,这里即为按<排序。