人们用什么来表示size_t无效? -1不起作用,0可以是有效大小。
答案 0 :(得分:10)
也许是((size_t)-1)
?
严格来说,它 是一个有效的大小,但是一旦你拥有了这个,你不可能需要任何其他的; - )
答案 1 :(得分:4)
如果你在谈论std :: string,那么size_t的无效值是std :: string :: npos。 通常你不应该使用-1,因为size_t是无符号的,你可以在编译器之间进行隐式转换时进行失败的比较。
话虽如此,std :: strings的npos设置为0XFFFFFFFFFFFFFFFF ...这是二进制等效值-1。它还会计算无符号size_t字段的最大允许值。
答案 2 :(得分:3)
基本上你不能。无论您使用什么价值都可能是有效的。最好传递一个标志,说它无效。
答案 3 :(得分:1)
你怎么做才能表示int
无效? -1是int的有效值。这些类型没有指定“无效”值。您可以决定选择某个值(通常永远不会是变量所代表的值)来表示非法值,但这是您自己的定义,而不是人们通常使用的定义。
就个人而言,我不喜欢这种方式。我更喜欢创建另一个变量bool IsValid
,它将说明该size_t变量的值是否有效。有时,创建一个类来封装它们甚至可能更好。
答案 4 :(得分:1)
我的版本是:
#include <limits>
#define invalid_index std::numeric_limits<size_t>::max()