最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

比較

2023-08-01 22:25 作者:追逐彗星的尾巴  | 我要投稿

眾所周知,在C++中你不能總是很好地比較不同類型的整數(shù)。例如比較int x{ 1 }unsigned y{ -1 },編譯器會說x小于y(因為有符號類型會被隱式轉(zhuǎn)換為無符號類型),但實際上我們想要的是1大于-1。

于是C++20給出了一組更安全的比較整數(shù)大小的函數(shù),它們包含在<utility>頭文件中。

每個函數(shù)都有兩個參數(shù),分別對應(yīng)于運算符的左邊和右邊,函數(shù)返回一個布爾值。

Case :

下面是一個std::cmp_less()的簡單實現(xiàn):

三向比較運算符

C++20引入了三向比較運算符(<=>),也被稱為 "Spaceship Operator" 。

若操作數(shù)為整型,則運算符的返回值是std::strong_ordering類型:其中strong_ordering::equal表示左右相等,strong_ordering::less表示左小于右,strong_ordering::greater表示左大于右。

若操作數(shù)為浮點型,則返回值是std::partial_ordering類型:其中partial_ordering::equivalent表示左右等價,partial_ordering::lesspartial_ordering::greater同上,partial_ordering::unordered表示無序(無法比較)。

--------------------------------------------------------------------------------------------------------------------

三向操作符的作用在于能夠簡化類中的比較重載。假設(shè)我們定義了一個類,并需要為這個類提供比較運算符,即一共需要重載六次運算符。但現(xiàn)在只需要重載一次三向運算符即可。

Case :

在這里我們使用了default關(guān)鍵字進行三向運算符的默認實現(xiàn)。

再來看一個復雜點的例子。

這里我們不僅需要定義<=>的重載,還需要重載運算符==。因為雖然三向運算符知道兩個分數(shù)對象之間的大小關(guān)系,但它無法判斷兩個對象的相等與否。在我們定義了運算符==后,編譯器就可以自動重寫!=表達式。

比較的評論 (共 條)

分享到微博請遵守國家法律
道孚县| 温州市| 临漳县| 柞水县| 吐鲁番市| 崇文区| 乌拉特后旗| 肇源县| 四子王旗| 黎城县| 成安县| 博兴县| 清水河县| 乳源| 丹寨县| 竹溪县| 中牟县| 靖江市| 承德县| 遵义市| 湖州市| 新和县| 津市市| 太原市| 色达县| 土默特右旗| 隆子县| 延寿县| 金阳县| 广灵县| 临猗县| 武冈市| 鸡泽县| 怀来县| 原阳县| 洛扎县| 澳门| 榆树市| 牙克石市| 鄂州市| 曲靖市|