作者khoguan (Khoguan Phuann)
看板C_and_CPP
标题Re: [问题] 请问STL的stack
时间Sat Aug 27 02:08:14 2005
※ 引述《kakashiliu (kakashi)》之铭言:
: #include<stack>
: stack<string>piles[52];
: 我使用STL里面的stack
: 但是使用完後想把里面内容清除要怎麽做呢!?
有 52 个那麽多的堆叠呀(仿八卦新闻播报员的口气 XD)
还是只是要一个堆叠,然後放 52 个 string 元素呢?
#include <stack>
#include <string>
#include <algorithm>
using std::stack;
using std::string;
using std::swap;
stack<string> piles[52];
// 对这 52 个堆叠进行翻天覆地的操作
// 分别推进了许许多多数量不等的字串。
// 以下是泥牛入海法
for(int i=0; i<52; ++i) {
stack<string> emp;
swap(emp, piles[i]);
}
// 剩下 52 个空壳堆叠。
WAIT... 要这样做,还不如在回圈里直接 piles[i] = stack<string>();
Mm... 要做一次清空 stack 的动作,还是直接利用 STL 的 deque 吧。
反正 stack 的 member function 是 deque 的子集,只是换了名称
而已。deque 就有 clear() 可用了。一下子全部清空这种操作,本
来就不合 stack 的精神(或是比较保守的说,不合 STL 的 stack
的精神)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.208.168
※ 编辑: khoguan 来自: 220.130.208.168 (08/27 02:33)
1F:推 cppOrz:不会,如果真要清空,swap 才是正解。这个「泥牛 59.120.214.120 08/27
2F:→ cppOrz:入海」法粉漂亮说… 59.120.214.120 08/27
3F:推 kakashiliu:看我还是换deque来做比较好orz 61.58.184.76 08/27
4F:→ kakashiliu:不管如何还是感谢各位大大^^ 61.58.184.76 08/27