c++ - 将 std::distance 的结果与无符号类型进行比较

标签 c++ casting

我希望将 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/

相关文章:

c++ - 在另一个类的表单上添加 QGraphicsView

c++ - 本地类模板

c++ - 如何将上下文信息传递给 std::iostream 的自定义运算符<<

c - Swift:无法将函数指针转换为 (void*) 以便在 C 风格的第三方库中使用

c++ - OpenCv Visual C++ 2010 Express 问题

java - jsp中Object[]无法转换为String[]

delphi - delphi中有这个VB代码的相关语法吗?

c# - 在 C# 中转换对象是否总是返回对初始对象的引用

c++ - 将普通指针转换到 std::shared_ptr 似乎不起作用

c++ - {fmt} 中基于特征的定制点和 ODR 违规问题