在模板类中使用 <limits.h> > 中的最大值

Using MAX Value from <limits.h> >in template class

本文关键字:gt limits 最大值 lt      更新时间:2023-10-16

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

#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或其他语言是否有特殊的方式。

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

如果T是数值类型,那么你需要包含<limits>并使用std::numeric_limits

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

当然,这适用于C++。

改用<limits>

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

这专门用于所有数字类型。

使用

<limits> 而不是 <limits.h> 然后使用

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

std::numeric_limits