首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++关于模版的有关问题

2012-06-14 
C++关于模版的问题下边这题怎么写啊,求大侠帮忙!!!根据整数栈的定义,可抽象出的栈类模板为:templateclass

C++关于模版的问题
下边这题怎么写啊,求大侠帮忙!!!


根据整数栈的定义,可抽象出的栈类模板为:
template<class T>
class Stack{
public:
  Stack();
  ~Stack();
  void Push(T& n);
  T Pop();
private:
  static const int SIZE;
  T* stack;
  int tos;
};
这里需要将该模板中的各成员函数进行定义即可。tos是栈顶位置,Push()为压栈操作,Pop()为弹栈操作,要在这两个操作中分别考虑栈的长度和栈是否为空。最后,要在main函数中对编写的栈类模板进行测试。

[解决办法]
类似代码很多的。。自己GOOGLE一下不就完了。。

我随便写了个链栈,最简化的,你可以参考下。

C/C++ code
template <typename T>class StackWithLi{private:    struct StackNode    {        T data;        StackNode *next;        StackNode(const T &d , StackNode *const n): data(d) , next(n){}    };    StackNode *top;public:    StackWithLi() : top(0){}    void push(const T &);    T pop();    bool isEmpty(){ return top == nullptr ;}};template <typename T>T StackWithLi<T>::pop(){    if (isEmpty())    {        cout<<"The stack is empty!"<<endl;        exit(0);    }    else    {        StackNode *p = top;        T temp = top->data;        top = top->next;        delete p;        return temp;    }}template <typename T>void StackWithLi<T>::push( const T &d ){    StackNode *node = new StackNode(d , top);    top = node;}
[解决办法]
就像一楼所说的,注意两点就行了:
一是函数前面要template<typename T> 
二是类型名是Stack<T>

像你这种有个static const int SIZE的,不如将SIZE当作非类型的模板参数,定义
template<typename T, int SIZE>
class Stack {
//....
};
这样可能更好。
[解决办法]
探讨

类似代码很多的。。自己GOOGLE一下不就完了。。

我随便写了个链栈,最简化的,你可以参考下。

C/C++ code
template <typename T>
class StackWithLi
{
private:
struct StackNode
{
T data;
StackNode *next;

Stack……

热点排行
Bad Request.