我希望将 std::vector 中元素的索引与无符号值进行比较。如果我直接比较的话;
if(std::distance(...)>min_distance) // true for some
我刚刚收到警告,但工作正常。但是,为了摆脱警告,如果我将 min_distance 转换为 int,我不会得到任何比较结果(尽管有)
if(std::distance(...)>(int)min_distance) // never true
具体问题是什么?
最佳答案
尝试:
if ( std::abs( std::distance( ... ) ) > min_distance )
std::distance
返回一个带符号的值。我假设您尝试以 -2
AND 2
将被视为 2
的方式获取距离。 abs
函数为您提供 absolute value这意味着无论输入的符号是什么,您总是会得到一个正值。
关于c++ - 将 std::distance 的结果与无符号类型进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3867111/