You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何理解C++ struct代码中定义的operator<运算符重载逻辑?

C++ Task结构体运算符重载代码讲解

首先说明原代码存在一处笔误:函数体中使用的d并没有定义,实际应为成员变量deadline,修正后的重载逻辑如下:

bool operator < (const Task& t1) const {
    return deadline < t1.deadline;
}

语法含义

这段是C++的运算符重载语法,作用是给自定义的Task结构体定义小于号<的比较规则,各部分的含义如下:

  • operator <:表示我们要重载的运算符是小于号<
  • const Task& t1:参数是另一个Task对象的常量引用,既避免了传值的拷贝开销,也保证了比较过程中不会修改被比较的对象
  • 函数末尾的const:限定这个比较函数不会修改当前Task对象的任何成员变量,符合比较操作的只读属性
  • 返回值bool:小于号比较的结果是布尔值,符合比较运算符的通用返回规则

实际作用

你理解的没错,这段代码就是自定义排序规则:

  • 当两个Task对象用<比较时,只会比较二者的deadline(截止时间)成员,当前对象的截止时间小于另一个对象的截止时间时,返回true,否则返回false
  • 后续如果你用STL的sort()函数排序task数组,或者把Task对象放入std::set、std::priority_queue这类需要内置排序逻辑的容器时,编译器会自动调用这个重载的<运算符完成大小判断,默认就会按截止时间从小到大对Task对象排序,刚好符合调度类算法的常见需求。

内容的提问来源于stack exchange,提问作者Alex Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:15:04