我有一个像这样的堆栈的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或其他语言中有特殊方式,请告诉我。
非数字类型的最大值是多少?
答案 0 :(得分:2)
答案 1 :(得分:1)
改为使用<limits>
:
T max = std::numeric_limits<T>::max();
这适用于所有数字类型。
答案 2 :(得分:1)