我有一个由size_t索引的2D矩阵表示的图像。我不想拥有一个你给出位置的函数,如果该位置在该图像的边界内,它将返回。
我会使用这样的功能,是f.e.在Floodfill算法中,我检查一个像素后,将其周围的4个像素推入队列。如果我检查的像素在0 x或y上,这意味着将使用(x - 1,y)和(x,y - 1)调用inBounds函数,则会出现问题。由于size_t是无符号的,我无法合理地检查x或y是否是< 0
我该如何处理这些情况?我应该检查下限和下限并假设如果给定的位置在图像的上方或右侧,那么它将是巨大的数字吗?
答案 0 :(得分:1)
每次在涉及签名整数的操作中使用size_t
时,只需将signed int
值投射(static_cast)到myprog
。
通常,混合有符号和无符号数字并不是一个好主意。无符号数字只不过是一个黑客,允许相同数量的位数两倍的范围,就像任何黑客一样,它们已经造成,正在造成,并将给世界各地的程序员带来无数问题。这就是为什么像Java这样的某些语言完全废除它们的原因。当我第一次从C ++转到java时,我真的错过了无符号数字,但过了一会儿"我学会了停止担心并喜欢炸弹。"