基于vector的栈实现(C++)
来源:互联网 发布:网络研修帖子 编辑:程序博客网 时间:2024/06/01 13:00
基于vector的栈实现(C++)
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
头文件:
1 #ifndef __STACK_H__
2 #define __STACK_H__
3 #include <iostream>
4 #include <vector>
5 using namespace std;
6
7 template<typename T>
8 class CStack
9 {
10 public:
11 CStack() { }
12 ~CStack() { }
13
14 size_t empty()
15 {
16 return miDataVec.empty();
17 }
18
19 size_t size()
20 {
21 return miDataVec.size();
22 }
23
24 void pop()
25 {
26 miDataVec.pop_back();
27 }
28
29 T& top()
30 {
31 return miDataVec.back();
32 }
33
34 const T& top() const
35 {
36 return miDataVec.back();
37 }
38
39 void push(const T& aItem)
40 {
41 miDataVec.push_back(aItem);
42 }
43 private:
44 vector<T> miDataVec;
45
46 };
47
48
49
50
51
52
53 #endif
54
测试程序:
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <iostream>
4 #include "stack.h"
5 using namespace std;
6
7
8 int main(int argc, char* argv[])
9 {
10 CStack<int> loStack;
11
12 loStack.push(1);
13 cout <<loStack.top() <<" ";
14
15 loStack.push(2);
16 cout <<loStack.top() <<" ";
17
18 loStack.push(1);
19 cout <<loStack.top() <<" ";
20
21 loStack.push(2);
22 cout <<loStack.top() <<" ";
23
24 loStack.push(3);
25 cout <<loStack.top() <<" ";
26
27 loStack.push(4);
28 cout <<loStack.top() <<" ";
29
30 cout <<endl;
31
32 while(loStack.size() != 0)
33 {
34 cout <<loStack.top() <<" ";
35 loStack.pop();
36 }
37
38 cout <<endl;
39
40 exit(0);
41 }
42
这里顺面说明一下,这个实现仅仅是为了说明问题。
在C++中标准的stack实现是通过adaptor设计模式来实现的,并将用于实现的容器放入了模板的参数,以方便你用vector和list,来替代默认的deque。
- 基于vector的栈实现(C++)
- vector的实现【C++】
- MOOC清华《面向对象程序设计》第8章:栈的实现(基于STL vector)
- 基于Vector实现C++中的适配器stack(顺序栈)
- 基于vector类实现的高精度算法
- 数据结构-Vector实现(C++)
- 基于Vector实现适配器stack(顺序栈)
- 栈的vector实现
- (C++)vector & list 的使用和模拟实现
- C实现的类似vector的容器
- c/c++ vector 的简单实现
- Vector 的简单实现 C++11
- [C++]vector 的 push_back实现原理
- (C++)Vector 简单的底层实现
- 基于链表的栈实现(c++)
- 基于链表的栈实现(c++)
- 基数排序(基于C语言的实现)
- Vector 的使用(C++)
- shell 查看最占空间的文件夹和文件 du的用法
- NFC(近场通信)技术的移动应用
- 封装 继承 多态
- Spring事务传播属性与隔离级别
- log4j日志使用
- 基于vector的栈实现(C++)
- 追猎者:贵金属二次探底未果,本周依然保持逢低做多
- 燕十八php公益课程---面向对象课堂笔记(一)
- JAVA通过物理地址获取经纬度
- Ubuntu文件系统管理
- windows phone中的数据绑定
- uva_590_Always on the run (普通DP)
- QT中文显示
- 《数据结构与算法分析-C++描述》List实现的问题,g++太符合标准,以至于有的时候虽然正确,但是却会让你吃惊