【问题标题】:Min/max of arbitrary type T in C++11 [closed]C ++ 11中任意类型T的最小值/最大值[关闭]
【发布时间】:2012-09-30 09:52:39
【问题描述】:

有没有办法分配任意类型的变量T 它的最小值或最大值?

template <typename T>
void setMax(T& var){
var=MAXIMUM_OF_TYPE_T; //can this be done?
}

T toBeMaxed;
setMax(toBeMaxed);

如果Tint,我也可以这样做

var=std::numeric_limits<int>::max();

改为。

【问题讨论】:

  • std::string 的最大值是多少?任何容器?还是数据库连接?互斥体?
  • 说最大长度是5,现在最大字符串是"aaaaa"还是"bbbbb"
  • 你不能只为你的类型T定义std::numeric_limits&lt;T&gt;::max()吗?
  • @VladLazarenko:抱歉,我的枚举的底层是 64 位宽,它有 12 个元素,所以最大值的 12 倍太大,无法容纳任何类型。 fstream 位于无盘系统上,其中唯一的 I/O 是通过网络。 Object 是个玩笑,我当然不会和 Java 程序员做朋友。
  • @Vlad: 哎呀,他们似乎被标记为constexpr 毕竟,我的错。很抱歉造成混乱!

标签: c++ templates max minimum


【解决方案1】:

如果您只处理具有std::numeric_limits&lt;T&gt;::max(); 特化的类型,您可以按如下方式实现您的函数:

#include <limits>
template <typename T>
void setMax(T& var){
    var=std::numeric_limits<T>::max();
}
int main() {
    int intvar;
    setMax(intvar);

    float floatvar;
    setMax(floatvar);

    char charvar;
    setMax(charvar);
}

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多