std::less

std::less

 
定义于头文件  <functional>
  
templateclass T >
struct less;
 (C++14 前)
templateclass T void >
struct less;
 (C++14 起)
   

进行比较的函数对象。调用类型 T 上的 operator< ,除非特化。

特化

std::less 的特化为任何指针类型产生严格全序,即使内建的 operator< 不如此。严格全序在 std::less 、 std::greater 、 std::less_equal 和 std::greater_equal 对该指针类型的特化间一致,且亦与对应的内建运算符( < 、 > 、 <= 及 >= )所强加的部分顺序一致。

若特化 std::less<void> 的函数调用运算符调用内建运算符比较指针,则它产生严格全序,即使内建的 operator<不如此。此严格全序在特化 std::less<void> 、 std::greater<void> 、 std::less_equal<void> 和 std::greater_equal<void> 间一致,亦与对应的内建运算符所强加的部分顺序一致。

(C++14 起)

标准库提供 std::less 在不指定 T 时的特化,使得参数类型和返回类型留待推导。

实现 < y 并推导参数和返回类型的函数对象 
(类模板特化)
(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值的排序规则,这里即为按<排序。

转载于:https://www.cnblogs.com/ettie999/p/8664013.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值