C++ template--类模版Stack的实现
来源:互联网 发布:质量数据分析管理办法 编辑:程序博客网 时间:2024/06/10 07:05
类模版Stack的实现
//stack1.hpp#include<vector>#include<stdexcept>using namespace std;template <typename T>class Stack{private:vector<T> elems;public:void push(T const&);void pop();T top() const;bool empty() const{return elems.empty();}};template <typename T>void Stack<T>::push(T const &elem){elems.push_back(elem);//vector里面最后添加一个,即栈顶添加一个元素}template <typename T>void Stack<T>::pop(){if(elems.empty()){throw out_of_range("Stack<>::pop():empty stack");}elems.pop_back();//vector里面移除最后一个元素,即移除栈顶元素}template <typename T>T Stack<T>::top() const{if(elems.empty()){throw out_of_range("Stack<>::top():empty stack");}return elems.back();//vector里面返回最末一个元素,即stack里面的栈顶元素}
可以看出,类模版Stack<>是通过C++标准库的类模版vector<>来实现的,因此,我们不需要亲自去实现内存管理,拷贝构造函数和赋值运算符,从而可以把精力放在该模板类的接口实现上。
//main.cpp//类模版Stack实现#include<iostream>#include<string>#include<vector>#include"stack1.hpp"using namespace std;int main(){Stack<int> intStack;//使用int桟cout<<"使用int桟"<<endl;for(int i=1;i<6;i++)intStack.push(i);while(!intStack.empty()){cout<<intStack.top()<<" ";intStack.pop();}cout<<endl;Stack<string> stringStack;cout<<"请输入string(#退出):";string str;while(cin>>str){if(str=="#")break;stringStack.push(str);}while(!stringStack.empty()){cout<<stringStack.top()<<" ";stringStack.pop();}cout<<endl;system("pause");return 0;}
对于所有被调用的成员函数,都会实例化出基于int类型的函数代码。
注意:只有那些被调用的成员函数,才会产生这些函数的实例化代码。对于类模版,成员函数只有在被使用的时候才会被实例化。
3 0
- C++ template--类模版Stack的实现
- Template模版实例(C++)
- C++template--函数模版
- Stack-c++template
- [C++]Stack with Template
- [C#]Stack类的实现
- template类模版的用法举例
- C++_class Template about Stack(使用类模板实现栈操作)
- C++:栈(stack)的模板类实现
- jquery的template模版功能
- 函数模版与类模版template
- 纯C的Stack实现
- c++ Template模版类,实例
- template类模版实例化易出现的问题
- 模版template
- Objective C ARC下的单例模版宏 ARC Singleton template
- 对c++模版的认识 template关键字
- C++中template(模版)的使用
- Eclipse中安装Spring插件
- POJ2411(状态压缩DP)
- 触摸控制移动与缩放算法 - Cocos2d-JS + CocosBuilder
- CocoaLumberjack使用案例
- 关于软件PicDecor的制作笔记(三)
- C++ template--类模版Stack的实现
- URAL 1204. Idempotents 扩展欧几里德
- Add Two Numbers 看着简单,其实各种奇葩情况需要考虑。。。
- 《红孩儿引擎内功心法修练与Cocos2d-x》之结点系统(场景,层,精灵)(精)
- vim显示行号、语法高亮、自动缩进的设置
- PROC系列之---/proc/pid/stat
- 访问者模式之C++实现
- Next Permutation
- top命令详解