本文主要是介绍从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、缺省模板参数
回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下:
template <typename T, typename CONT = std::deque<T> >
class Stack
{
…
private:
CONT c_;
};
如果没有传第二个参数,默认为deque 双端队列,当然我们也可以传递std::vector<T>
下面程序借助标准模板容器管理内存来实现stack模板类:
Stack.h:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #ifndef _STACK_H_ #define _STACK_H_ #include <exception> #include <deque> using namespace std; template < typename T, typename CONT = deque<T> > class Stack { public: Stack() : c_() { } ~Stack() { } void Push( const T &elem) { c_.push_back(elem); } void Pop() { c_.pop_back(); } T &Top() { return c_.back(); } const T &Top() const { return c_.back(); } bool Empty() const { return c_.empty(); } private: CONT c_; }; #endif // _STACK_H_ |
main.cpp:
这篇关于从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!