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  #define invalid_index std::numeric_limits::max()