【发布时间】:2017-03-05 05:52:14
【问题描述】:
我有一个名为 pages 的 c++ 堆栈。 由于我没有 clear() 函数来清除堆栈,我编写了以下代码:
stack<string> pages;
//here is some operation
//now clearing the stack
while(!pages.empty())
pages.pop();
现在我的问题是:有没有更有效的方法来清除堆栈?
【问题讨论】:
-
您是否尝试过为您的堆栈分配一个空堆栈?
-
不,谢谢你的建议(y)
-
你问的是效率。创建新堆栈可能不会更有效,因为它会导致更多的堆分配。底层容器默认为
deque。如果您使用deque或vector,您将丢弃您已经为容器申请的分配内存,否则可以重复使用。 -
@PaulRooney 可以反过来使用相同的参数。在循环中使用微不足道的析构函数销毁类型可能比(可能被省略的)分配更浪费。而且,保留分配的内存可能与他想要的相反。一切都取决于做出明智的决定。
-
当然。我并不是说一个比另一个更好,只是根据 Op 的需求来考虑。
标签: c++