c++ - 在不使用文字的情况下检测负数的更好方法是什么?

标签 c++ algorithm

通常要检测负数,您只需执行 if(x < 0) ... .但是,没有硬编码文字的最佳方式是什么?这不是我需要避免的值,而是数据类型。我正在寻找 <algorithm> 风格的东西.

我有以下解决方案,但有更好的方法吗?有些事情告诉我这不是尽可能高效。

template<typename T>
inline bool is_negative(const T& n)
{
    return n < (n - n);
}

我想使用与 uses 相同的限制。所以可以要求T实现算术运算符,但没有比这更具体/专门的了。

否则我们可以通过要求 T 来解决这个问题实现:

  • bool operator <(int)
  • T() (我们假设的默认构造函数等于 0)
  • 或者为什么不只需要 bool IsNegative()

这只是出于我自己的好奇心;不用于任何项目。

最佳答案

return n < T();

(现在我想知道你为什么有那个限制)。

关于c++ - 在不使用文字的情况下检测负数的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943262/

相关文章:

javascript - PHP:用自然语言翻译每周日历可用性?

c++ - 运算符 << 不匹配

c++ - 在 return 语句中嵌套条件运算符

c++ - 我应该在哪里存储游戏的纹理?

c++ - 使用 sfinae 选出首选的可变参数构造函数

c++ - 下面的 trie 代码中发生了什么

algorithm - 邻接矩阵和邻接表的时间/空间复杂度

c++ - x64 上的 mingw dw2 异常

algorithm - 在社交网络中查找 “publisher” 的 O(n) 算法

c# - LINQ 知道如何优化 "queries"吗?