赞
踩
很遗憾,没有现成函数,可以采用
stack<int> s;
while(!s.empty()) s.pop();
// stack操作的是堆内存,所以要一个一个弹出。
//
stack<int> s;
stack<int>().swap(s);
// swap相当于交换了s和一个空临时stack的内容,然后临时stack再结束生命周期,但由于操作的是堆空间,其实还是一个一个释放空间。
但是swap比pop要快,耗时差不多是1/3
测试代码:
int N = 10000000; stack<int> s2; for(int i=0;i<N;i++) s2.push(i); double s2a = (double)clock(); stack<int>().swap(s2); double s2b = (double)clock(); printf("\e[01;34m Program use Time: \e[01;31m%.4f ms\e[0m\n",s2b - s2a); stack<int> s1; for(int i=0;i<N;i++) s1.push(i); double s1a = (double)clock(); while(!s1.empty()) s1.pop(); double s1b = (double)clock(); printf("\e[01;34m Program use Time: \e[01;31m%.4f ms\e[0m\n",s1b - s1a);
输出:
Program use Time: 168283.0000 ms
Program use Time: 510330.0000 ms
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。