gpt4 book ai didi

c++ - 使用无符号数进行图像边界检查

转载 作者:行者123 更新时间:2023-11-28 05:10:41 26 4
gpt4 key购买 nike

我有一个由 size_t 索引的二维矩阵表示的图像。我不希望有一个函数,您可以指定一个位置,如果该位置在该图像的边界内,它就会返回。

我会在哪里使用这样的功能,是 f.e.在 floodfill 算法中,我会在检查一个像素后,将其周围的 4 个像素插入队列。如果我正在检查的像素位于 0 x 或 y 上,则会出现问题,这意味着将使用 (x - 1, y) 和 (x, y - 1) 调用 inBounds 函数。由于 size_t 未签名,我无法合理地检查 x 或 y 是否 < 0。

我该如何处理这些情况?我是否应该只检查底部和左侧边界并假设如果给定位置在图像上方或右侧,它无论如何都会是一个巨大的数字?

最佳答案

每次在涉及有符号整数的操作中使用它们时,只需将您的 size_t 值转换 (static_cast) 为 signed int

通常,混合有符号数和无符号数不是一个好主意。无符号数只不过是一种黑客攻击,它允许相同位数的两倍范围,就像任何黑客攻击一样,它们已经、正在、并将给全世界的程序员带来无数问题。这就是为什么像java这样的某些语言完全废除了它们的原因。当我第一次从 C++ 转向 Java 时,我真的很想念无符号数,但过了一段时间后,“我学会了停止担心并爱上炸弹。”

关于c++ - 使用无符号数进行图像边界检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43569830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com