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

函数标识符与参数间的<符号含义及operator后<的作用是什么?

关于C++结构体中operator<的解释

先直接给你结论:你问的这两个问题其实是同一个点——这里的<是用来重载C++的小于比较运算符,让你自定义的point结构体对象能像int、string这些内置类型一样,用<符号来比较大小。

咱们拆解来看这段代码:

struct point {
    int x, y;
    bool operator<(const point &p) {
        if (x == p.x) return y < p.y;
        else return x < p.x; 
    } 
};

具体细节说明

  • operator<是C++运算符重载的固定语法:operator是关键字,后面跟你要重载的运算符(这里就是<),所以operator<整体代表“小于运算符重载函数”。你问的两个问题里的<都是这个重载语法的一部分,本质是一回事——就是告诉编译器:当两个point对象用<比较时,就执行这个函数里的逻辑。
  • 函数的参数const point &p是要和当前对象比较的另一个point实例,加const是保证不会修改传入的对象,用引用是避免拷贝,提升效率。
  • 函数体里的逻辑是自定义的比较规则:先比x坐标,x相同就比y坐标,这样就给point对象定义了一个“排序优先级”——按x升序,x相等则按y升序。

举个实际使用的例子,现在你可以像这样直接比较两个point对象:

point p1 = {2, 5};
point p2 = {2, 3};
if (p2 < p1) { // 这里会调用我们重载的operator<,返回true
    // 执行你需要的逻辑
}

这种重载非常实用,比如当你把point对象放进std::set容器,或者用std::sort对point数组排序时,编译器会自动调用这个重载的<运算符来完成比较和排序工作。

内容的提问来源于stack exchange,提问作者Siddhartha Shrestha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:02:25