日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

C++20那些事之宇宙飛船運算符

來源: 責(zé)編: 時間:2024-07-12 17:20:00 144觀看
導(dǎo)讀本節(jié)將引入C++20的另一個知識點:宇宙飛船運算符/三向比較運算符。三種排序三向比較運算符<=>又稱為宇宙飛船運算符,返回值有三種排序,下面從gcc源碼角度來深入聊一下。注:懶人版,本節(jié)示例已更新星球。用法:<=>#include <com

本節(jié)將引入C++20的另一個知識點:宇宙飛船運算符/三向比較運算符。cvE28資訊網(wǎng)——每日最新資訊28at.com

三種排序

三向比較運算符<=>又稱為宇宙飛船運算符,返回值有三種排序,下面從gcc源碼角度來深入聊一下。cvE28資訊網(wǎng)——每日最新資訊28at.com

注:懶人版,本節(jié)示例已更新星球。cvE28資訊網(wǎng)——每日最新資訊28at.com

用法:<=>cvE28資訊網(wǎng)——每日最新資訊28at.com

#include <compare>#include <iostream>int main() {   auto c1 = 1.1 <=> 2.2;   auto c2 = -1 <=> 1;   std::cout << typeid(c1).name() << std::endl;   std::cout << typeid(c2).name() << std::endl;}

輸出:cvE28資訊網(wǎng)——每日最新資訊28at.com

St16partial_orderingSt15strong_ordering
  1. 1.1 <=> 2.2:這是對兩個浮點數(shù)進(jìn)行比較。對于浮點數(shù),標(biāo)準(zhǔn)庫返回的是std::partial_ordering,因為浮點數(shù)有NaN值的存在,這使得它們之間的比較不是嚴(yán)格的全序。std::partial_ordering允許結(jié)果是<、>、==或者unordered。

我們可以使用gcc代碼靜態(tài)變量來查看partial_ordering到底是小于、大于、等于、無序:cvE28資訊網(wǎng)——每日最新資訊28at.com

static const partial_ordering less;static const partial_ordering equivalent;static const partial_ordering greater;static const partial_ordering unordered;

如果我們強(qiáng)制轉(zhuǎn)換便會報錯:cvE28資訊網(wǎng)——每日最新資訊28at.com

comp.cc:6:36: error: conversion from 'std::partial_ordering' to non-scalar type 'std::strong_ordering' requested    6 |   std::strong_ordering c1 = 1.1 <=> 2.2;
2. `-1 <=> 1`:這是對兩個整數(shù)進(jìn)行比較。對于整數(shù),標(biāo)準(zhǔn)庫返回的是`std::strong_ordering`,因為整數(shù)的比較是嚴(yán)格的全序關(guān)系,沒有不確定的情況。`std::strong_ordering`只會返回`<`、`>`或`==`。

同理,可以使用下面4個靜態(tài)成員。cvE28資訊網(wǎng)——每日最新資訊28at.com

static const strong_ordering less;static const strong_ordering equal;static const strong_ordering equivalent;static const strong_ordering greater;

因此,c1的類型是std::partial_ordering,而c2的類型是std::strong_ordering,這也解釋了為什么輸出的類型不一樣。cvE28資訊網(wǎng)——每日最新資訊28at.com

除了partial_ordering、strong_ordering之外,<=>還可能返回weak_ordering,靜態(tài)成員為:cvE28資訊網(wǎng)——每日最新資訊28at.com

static const weak_ordering less;static const weak_ordering equivalent;static const weak_ordering greater;

equal與equivalent

在上面的三種ording可以看到對于等于出現(xiàn)了兩個:equal與equivalent,這兩者有什么區(qū)別呢?cvE28資訊網(wǎng)——每日最新資訊28at.com

這里直接看cppreference,兩者之間沒有區(qū)別。然而,std::strong_ordering 是唯一定義相等的類別。所有其他類別僅定義等價。也正好驗證了上面的靜態(tài)成員,對于string_ordering有兩個,其他的只有equivalent。cvE28資訊網(wǎng)——每日最新資訊28at.com

如果比較在被比較的項目之間產(chǎn)生強(qiáng)排序,則等價和相等是相同的。之所以有兩個詞來表示它,是因為這對于其他類型的排序是不一樣的。弱和部分根本沒有相等性;它們只提供等價性。cvE28資訊網(wǎng)——每日最新資訊28at.com

等價意味著兩個對象可以比較相等。相等意味著更強(qiáng)的東西;如果它們比較相等,則可以在任何 const 用法中用一個替換另一個:只要 a == b 為真,f(a) == f(b) 的屬性就為真,其中 f 表示僅讀取可通過參數(shù)的公共 const 成員訪問的比較突出狀態(tài)的函數(shù)。如果類型的比較允許相等(這是強(qiáng)排序的要求),那么它也允許等價。因此,對于強(qiáng)排序比較,它們是相同的。cvE28資訊網(wǎng)——每日最新資訊28at.com

https://en.cppreference.com/w/cpp/utility/compare/strong_orderingcvE28資訊網(wǎng)——每日最新資訊28at.com

為什么使用三向比較運算符?

三向比較運算符(<=>)使得在一次操作中就能夠確定兩個值的排序關(guān)系,而傳統(tǒng)的比較運算符則需要多次比較。cvE28資訊網(wǎng)——每日最新資訊28at.com

傳統(tǒng)比較運算符的限制:cvE28資訊網(wǎng)——每日最新資訊28at.com

  • 如果 a == b 為假,你無法知道 a < b 還是 a > b。
  • 如果 a != b 為真,你無法知道 a < b 還是 a > b。
  • 如果 a < b 為假,你無法知道 a == b 還是 a > b。
  • 如果 a > b 為假,你無法知道 a == b 還是 a < b。
  • 如果 a <= b 為真,你無法知道 a == b 還是 a < b。
  • 如果 a >= b 為真,你無法知道 a == b 還是 a > b。

這些限制表明,傳統(tǒng)的比較運算符不能一次性確定兩個值的完全關(guān)系,而是需要多次比較來獲得完整的結(jié)果。cvE28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-100712-0.htmlC++20那些事之宇宙飛船運算符

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 統(tǒng)計學(xué)入門:時間序列分析基礎(chǔ)知識詳解

下一篇: 聊聊2024年Rust加密生態(tài)系統(tǒng)

標(biāo)簽:
  • 熱門焦點
  • 一加Ace2 Pro真機(jī)揭曉 鈦空灰配色質(zhì)感拉滿

    終于,在經(jīng)過了幾波預(yù)熱之后,一加Ace2 Pro的外觀真機(jī)圖在網(wǎng)上出現(xiàn)了。還是博主數(shù)碼閑聊站曝光的,這次的外觀設(shè)計還是延續(xù)了一加11的方案,只是細(xì)節(jié)上有了調(diào)整,例如新加入了鈦空灰
  • K60至尊版剛預(yù)熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛?cè)缁鹑巛钡男麄髁薑60 Ultra的各種技術(shù)和硬件配置,作為競品的一加也坐不住了。一加中國區(qū)總裁李杰發(fā)布了兩條微博,表示在自家的一加Ace2上早就已經(jīng)采用了和PixelWo
  • 8月總票房已突破10億!《封神》第一:口碑已經(jīng)成了

    8月5日消息,據(jù)燈塔專業(yè)版數(shù)據(jù),截至8月5日9時35分,8月總票房(含預(yù)售)已突破10億。其中,《封神》以大比分的優(yōu)勢領(lǐng)先。根據(jù)官方消息,目前該片總票房已經(jīng)超過14.
  • 得物效率前端微應(yīng)用推進(jìn)過程與思考

    一、背景效率工程隨著業(yè)務(wù)的發(fā)展,組織規(guī)模的擴(kuò)大,越來越多的企業(yè)開始意識到協(xié)作效率對于企業(yè)團(tuán)隊的重要性,甚至是決定其在某個行業(yè)競爭中突圍的關(guān)鍵,是企業(yè)長久生存的根本。得物
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • JavaScript學(xué)習(xí) -AES加密算法

    引言在當(dāng)今數(shù)字化時代,前端應(yīng)用程序扮演著重要角色,用戶的敏感數(shù)據(jù)經(jīng)常在前端進(jìn)行加密和解密操作。然而,這樣的操作在網(wǎng)絡(luò)傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數(shù)據(jù)
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發(fā)布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預(yù)測小
  • SN570 NVMe SSD固態(tài)硬盤 價格與性能兼具

    SN570 NVMe SSD固態(tài)硬盤是西部數(shù)據(jù)發(fā)布的最新一代WD Blue系列的固態(tài)硬盤,不僅閃存技術(shù)更為精進(jìn),性能也得到了進(jìn)一步的躍升。WD Blue SN570 NVMe SSD的包裝外
  • 上海舉辦人工智能大會活動,建設(shè)人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術(shù)、新產(chǎn)品、新應(yīng)用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發(fā)展盛典人工
Top 主站蜘蛛池模板: 阿拉善左旗| 陆丰市| 遂宁市| 晋江市| 淄博市| 赣榆县| 敦煌市| 遵义市| 济宁市| 浦东新区| 亚东县| 利辛县| 平乐县| 阜平县| 明溪县| 招远市| 无棣县| 电白县| 易门县| 凤翔县| 石河子市| 包头市| 射阳县| 深州市| 石首市| 洪湖市| 娄烦县| 应用必备| 静宁县| 沁源县| 加查县| 深圳市| 潞城市| 丁青县| 眉山市| 涞源县| 金山区| 石首市| 遵义市| 合阳县| 乌兰县|