比较
2023-08-02 04:14:56 来源:哔哩哔哩
众所周知,在C++中你不能总是很好地比较不同类型的整数。例如比较int x{ 1 }和unsigned y{ -1 },编译器会说x小于y(因为有符号类型会被隐式转换为无符号类型),但实际上我们想要的是1大于-1。
(资料图片仅供参考)
于是C++20给出了一组更安全的比较整数大小的函数,它们包含在<utility>头文件中。
每个函数都有两个参数,分别对应于运算符的左边和右边,函数返回一个布尔值。
Case :
下面是一个std::cmp_less()的简单实现:
三向比较运算符
C++20引入了三向比较运算符(<=>),也被称为 "Spaceship Operator" 。
若操作数为整型,则运算符的返回值是std::strong_ordering类型:其中strong_ordering::equal表示左右相等,strong_ordering::less表示左小于右,strong_ordering::greater表示左大于右。
若操作数为浮点型,则返回值是std::partial_ordering类型:其中partial_ordering::equivalent表示左右等价,partial_ordering::less和partial_ordering::greater同上,partial_ordering::unordered表示无序(无法比较)。
--------------------------------------------------------------------------------------------------------------------
三向操作符的作用在于能够简化类中的比较重载。假设我们定义了一个类,并需要为这个类提供比较运算符,即一共需要重载六次运算符。但现在只需要重载一次三向运算符即可。
Case :
在这里我们使用了default关键字进行三向运算符的默认实现。
再来看一个复杂点的例子。
这里我们不仅需要定义<=>的重载,还需要重载运算符==。因为虽然三向运算符知道两个分数对象之间的大小关系,但它无法判断两个对象的相等与否。在我们定义了运算符==后,编译器就可以自动重写!=表达式。
关键词:
[责任编辑:]
相关阅读
- (2023-08-02)比较
- (2023-08-02)北京门头沟区处于暴雨橙色预警,其他区均降级为暴雨黄色预警
- (2023-08-02)驾驶员注意!这三条高速的多个站点或入口因暴雨管制
- (2023-08-02)8月1日起刷山东电子社保卡可享1分钱乘公交福利 活动将持续至10月底
- (2023-08-02)市场监管总局:分类施策推进企业注销“一件事”改革
- (2023-08-02)成立新公司,被马云看上的“海上风电”是啥?
- (2023-08-02)重出江湖,四川南充第一家供销社超市开业
- (2023-08-02)孟州:“亲青课堂”托管服务护航少年儿童暑期生活
- (2023-08-02)摩托罗拉moto G14发布!搭载12nm处理器约售870元
- (2023-08-02)寻找科技助力碳中和的“最优解” 成都产学研人士共聚“青腾树下”
- (2023-08-02)再创新高!上汽通用汽车新能源车7月交付量突破一万辆大关
- (2023-08-02)新疆2023二建考试查分入口
- (2023-08-02)扬创新创业之帆 谱新时代青春华章——“创青春”湖南省青年创新创业大赛十年综述
- (2023-08-02)湖南多措并举应对台风“杜苏芮” 生活必需品市场平稳运行
- (2023-08-02)扬子新材:收到行政处罚及市场禁入事先告知书
- (2023-08-02)云南能投(002053.SZ):累计已投产发电的风电场项目总装机容量增加至82.68万千瓦
- (2023-08-02)凯普生物董事长管乔中:强信心、明方向,以生物科技普惠于民
- (2023-08-02)3场成交率90%的招商会,昭示杜康全国化“确定性”
- (2023-08-02)乐信CEO肖文杰:发展消费金融是提振消费的重要抓手
- (2023-08-02)刑警抓捕嫌疑人时左膝关节处被横向折弯,仍死死锁住嫌疑人……
- (2023-08-02)通润装备:公司拥有自主知识产权的 1KW- 3.125MW 全系列光伏逆变器产品,基本实现了单纯工商业向户用、工商业、地面电站和自研监控全应用场景产品覆盖
- (2023-08-02)递延收益和其他应付款(专项应付款与递延收益的区别)
- (2023-08-02)张掖市公安局甘州分局侦破一起网络诈骗案
- (2023-08-02)芭门兴起!百亿人次围观,联名商品售罄,一场全世界的粉色狂欢
- (2023-08-02)8月1日重庆钢铁涨停分析:钢铁概念热股
- (2023-08-02)广东正推动放宽广州、深圳“限牌” 支持广州、深圳等汽车大市实施购车补贴、以旧换新
- (2023-08-02)场内ETF资金动态:7月88款游戏获版号,游戏行业回暖趋势明显,游戏行业大涨
- (2023-08-02)端游搬砖游戏排行榜 最新端游游戏排行榜
- (2023-08-02)暑运过半 长三角铁路发送旅客超8100万人次
- (2023-08-02)云竹为什么不能随便养 云松的养殖方法和注意事项