在模板类</limits.h>中使用<limits.h>&gt;中的MAX值

时间:2013-09-13 05:31:23

标签: java c++ c++11 max

我有一个像这样的堆栈的Template类:

#include <limits.h>  // header for max values 

template <class T> class StakMin: public My_Stack<T> {

    My_Stack <T> Min ;
    StakMin(){
    T= INT_MAX;        // <----------- I want to select it according to the T value 
    My_Stack <T>::My_Stack();
    }
    void push(T key){
        if (key < min() )
    {
        Min.push(key);
    }
    My_Stack <T>::push(key);
    }

    T get_top(){
    int value = My_Stack <T>::get_top();
       if(value == min())
          {
              Min.get_top();  
          }
       return value;
    }
    T min(){
        if( Min.Is_empty()) return INT_MAX;  // <------------ I want to select it according to the T value 
        else return Min.peek();
    }
};

一个解决方案是使用Switch的功能并静态做出决定,但我想知道有没有办法像模板一样,(更灵活) 如果java或其他语言中有特殊方式,请告诉我。

非数字类型的最大值是多少?

3 个答案:

答案 0 :(得分:2)

如果T是数字类型,则您需要包含<limits>并使用std::numeric_limits

T x = std::numeric_limits<T>::max();

当然,这适用于C ++。

答案 1 :(得分:1)

改为使用<limits>

T max = std::numeric_limits<T>::max();

这适用于所有数字类型。

答案 2 :(得分:1)

使用<limits>代替<limits.h>,然后使用

T maxVal = std :: numeric_limits :: max();

std::numeric_limits