上善若静水

while(effort=true){success++;}

   :: 首页 :: 联系 :: 聚合  :: 管理
  9 Posts :: 10 Stories :: 11 Comments :: 0 Trackbacks

留言簿(1)

搜索

  •  

积分与排名

  • 积分 - 41429
  • 排名 - 512

最新随笔

最新评论

阅读排行榜

评论排行榜

                                   摘自<<C++ Templates- the complete guide>>
                                          David Vandevoorde            Nicolai M.Josuttis 著
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                    stack4.hpp
/////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <stdexcept>

template <typename T, int MAXSIZE>
class Stack
{
private:
 T elems[MAXSIZE];
 int numElems;

public:
 Stack();
 void push(T const&);
 void pop();
 T top() const;
 bool empty() const
 {
  return numElems == 0;
 }
 bool full() const
 {
  return numElems == MAXSIZE;
 }
};

template <typename T, int MAXSIZE>
Stack<T, MAXSIZE>::Stack():numElems(0) {}

template <typename T, int MAXSIZE>
void Stack<T, MAXSIZE>::push(T const& elem)
{
 if(numElems == MAXSIZE)
 {
  throw std::out_of_range("Stack<>::push(): stack is full.");
 }
 elems[numElems] = elem;
 ++numElems;
}

template <typename T, int MAXSIZE>
void Stack<T, MAXSIZE>::pop()
{
 if(numElems <= 0)
 {
  throw std::out_of_range("Stack<>::pop():empty stack.");
 }
 --numElems;
}

template <typename T, int MAXSIZE>
T Stack<T, MAXSIZE>::top() const
{
 if(numElems<=0)
 {
  throw std::out_of_range("Stack<>::top():empty stack.");
 }
 return elems[numElems-1];
}

/******************* stack4test.cpp********************/

#include <iostream>
#include <string>
#include <cstdlib>
#include "stack4.hpp"

int main()
{
 try
 {
  Stack<int, 20> int20Stack;
  Stack<int, 40> int40Stack;
  Stack<std::string, 40> stringStack;

  int20Stack.push(7);
  std::cout<< int20Stack.top()<<std::endl;
  int20Stack.pop();

  stringStack.push("hello");
  std::cout<<stringStack.top()<<std::endl;
  stringStack.pop();
  stringStack.pop();
 }
 catch(std::exception const &ex)
 {
  std::cerr<<"Exception: "<<ex.what()<<std::endl;
  return EXIT_FAILURE;
 }
 return 0;
}


 

posted on 2006-10-17 12:11 上善若静水 阅读(914) 评论(1)  编辑 收藏 引用 所属分类: 知识点滴

Feedback

# re: 用C++模板实现可变数组 2011-10-15 20:43 wx
这是栈吧。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理