我想将队列存储在 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
最佳答案
您可以在循环中推送一个空的deque
,获取对其的引用,然后向其中添加项目。
#include <iostream>
#include <deque>
using namespace std;
int main () {
unsigned int limit, i = 0;
deque<deque<int> > container;
cin >> limit;
for ( ; i < limit; i++ ) {
container.push_back(deque<int>());
deque<int>& values = container.back();
//set some values in the values structure.
setValues(values, i); }
}
关于c++ - 在每次迭代中创建一个结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910860/