如何遍历STL的stack中的所有数据

felixzxh 2009-09-23 09:51:52
我想保存stack中的数据,不想pop出来,又想遍历一遍所有数据,有什么方法
...全文
1175 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yshuise 2009-09-23
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>
#include <list>

template<typename T, class C = std::list<T>>
class Stack{
public:
typedef typename C::iterator iterator;
iterator begin(){return cc.begin();}
iterator end() {return cc.end();}
void push(const T& vaule){ cc.push_front(vaule); }
void pop(){cc.pop_front();}
T top(){return cc.front(); }
private:
C cc;
};


int _tmain(int argc, _TCHAR* argv[])
{

Stack<int > FF;
FF.push(9);
FF.push(10);
FF.push(11);
Stack<int>::iterator itor= FF.begin();
while (itor != FF.end())
{
std::cout
<<*itor++<<std::endl;
}
std::cout
<<FF.top()<<std::endl;
FF.pop();
std::cout
<<FF.top()<<std::endl;
FF.pop();
std::cout
<<FF.top()<<std::endl;
FF.pop();


return 0;

}

11
10
9
11
10
9
请按任意键继续. . .

ToBeTough 2009-09-23
  • 打赏
  • 举报
回复
类似STL,做个迭代器,遍历就O拉
yshuise 2009-09-23
  • 打赏
  • 举报
回复
标准的stack根本没有提供这样的一个借口,但是可以对list进行封装,
自己写一个。

template<typename T, class C = std::list<T> >
Stack{
public:
pop();
push();
begin();
end();
};
taodm 2009-09-23
  • 打赏
  • 举报
回复
哎,兄弟,别只沉浸在自己的思维了。再看看我3楼的话。
liao05050075 2009-09-23
  • 打赏
  • 举报
回复
你完全可以用一个vector,或者直接用数组来模拟stack
felixzxh 2009-09-23
  • 打赏
  • 举报
回复
我现在的方法是把这个stack做了一个拷贝,因为stack中放得是一些id,通过这些id可以修改原始的数据。
我现在的需求有点像迷宫求解,需要用到stack啊。
rendao0563 2009-09-23
  • 打赏
  • 举报
回复
你的需求说明你不应该用stack
taodm 2009-09-23
  • 打赏
  • 举报
回复
呃,list就是一个stack。
wanjingwei 2009-09-23
  • 打赏
  • 举报
回复
不能随机访问,只能pop访问完了再push
liao05050075 2009-09-23
  • 打赏
  • 举报
回复
这个没办法。
除非你一个个pop出来,然后保存起来,最后再一个个push进去。

要不就换用list吧。

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧