(1)基本的Stack:以std::deque为内部容器。方法有入栈、出栈、返回栈顶元、判断栈空。
测试程序:
(2)改进1:指定栈的容量,要用到非类型模板参数。由于栈的容量固定,可以用数组来存放元素。
测试程序:
(3)改进2:可以指定栈内部使用的容器,还可以使 不同类型的栈之间能赋值。要用到模板模板参数。要定义一个赋值运算符的成员模板,它并不会覆盖缺省赋值运行符,对于相同类型栈之间的赋值,仍然会调用缺省的赋值运行符。由于容器有两个模板参数,一个是元素类型,一个是分配器类型,因此定义Stack的内部容器这个模板模板参数时,必须两个模板参数都要有。若只定义一个元素类型的参数,你传入容器(如vector,deque)时,并不能匹配。总之我们定义的模板模板参数必须与我们传入的模板精确匹配。
测试程序: