【发布时间】:2015-03-10 17:49:54
【问题描述】:
我想将队列存储在来自stl 库的队列结构中。由于某些原因,我必须在程序的每次迭代中存储一个队列,但我认为一遍又一遍地创建一个新队列太昂贵了。
我只知道两种方法可以做到这一点。第一个:
#include <iostream>
#include <deque>
using namespace std;
int main () {
unsigned int limit, i = 0;
deque<deque<int> > container;
cin >> limit;
for ( ; i < limit; i++ ) {
deque<int> values;
//set some values in the values structure.
setValues(values, i);
container.push(values);
}
}
第二个:
#include <iostream>
#include <deque>
using namespace std;
int main () {
unsigned int limit, i = 0;
deque<deque<int> > container;
deque<int> values;
cin >> limit;
for ( ; i < limit; i++ ) {
//reset the structure, i.e. delete al the previous values.
reset(values);
//set some values in the values structure.
setValues(values, i);
container.push(values);
}
}
这里的问题是我不知道任何重置队列的功能,或者我必须这样做values=NULL?
我怎样才能有效地做到这一点?
谢谢! :D
【问题讨论】:
-
std::deque::clear()怎么样?如values.clear()。 -
是最好的方法吗?
-
您应该使用第一种方法,直到您确定程序正确但速度太慢,并且您的测量表明对象构造是主要瓶颈。
标签: c++ memory data-structures stl