簡體   English   中英

size_t的值無效

[英]Invalid Value for size_t

人們用什么來表示size_t無效? -1不起作用,0可以是有效大小。

也許((size_t)-1)

嚴格來說,這一個有效的大小,但一旦你有這個,你不可能需要任何其他;-)

如果你在談論std :: string,那么size_t的無效值是std :: string :: npos。 通常,您不應該使用-1,因為size_t是無符號的,並且您可以在編譯器之間進行類型之間的隱式轉換時進行失敗的比較。

話雖這么說,std :: strings的npos設置為0XFFFFFFFFFFFFFFFF ...這是-1的二進制等值。 它還會計算無符號size_t字段的最大允許值。

基本上你不能。 無論您使用什么價值都可能是有效的。 最好傳遞一個標志,說它無效。

你怎么做才能表示int無效? -1是int的有效值。 這些類型沒有指定“無效”值。 您可以決定選擇某個值(通常永遠不會是您的變量所代表的值)來表示非法值,但這是您自己的定義,而不是人們通常使用的定義。

就個人而言,我不喜歡這種方式。 我更喜歡創建另一個變量bool IsValid ,它將說明該size_t變量的值是否有效。 有時,創建一個類來封裝它們甚至可能更好。

我的版本是:

#include <limits>
#define invalid_index std::numeric_limits<size_t>::max()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM