作者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