c++用结构体struct作为map的key时的注意点

今天发现一个新的知识盲点,做个记录。

当我们使用struct作为map的key时,我们的struct里就必须自己实现,重载 < 运算符的代码,不然就会报编译错误(除非你不用这个map,那还定义他干嘛)。为啥必须要重载实现一遍这个 < 运算呢?因为map本身是通过默认的 < 运算来对key进行排序的,现在我们用struct作为key之后,默认的这个 < 运算已经无法正确的比较出两个结构体对象的大小关系了,所以就必须我们自己实现一遍,至于两个结构体的大小该怎么比较就看您自己的需求了,我放一段示例作为参考。

struct port_spec {
    int portno;
    std::string proto;

    /* Sort in the usual nmap-services order. */
    bool operator<(const port_spec& other) const {
        if (this->portno < other.portno)
            return true;
        else if (this->portno > other.portno)
            return false;
        else
            return this->proto < other.proto;
    }
};
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值