c++ - 在每次迭代中创建一个结构体

标签 c++ memory data-structures stl

我想将队列存储在 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/

相关文章:

c++ - 使用指向内部缓冲区的指针 move 语义

c++ - 传递给 pthread 的参数发生变化

c++ - Qt 4.7 - glTexSubImage2D 返回 GL_INVALID_OPERATION

c - SIGSEGV 内存访问冲突

linux - 分段寄存器使用

data-structures - 冲突处理中的开放寻址是什么意思?

指针的c++ vector 以不同方式推回

c++ - 为什么 std::vector 零初始化它的内存?

python - 如何根据某些条件对单个可迭代对象进行 "round-robin"?

linux - linux内核中有没有类似 "key-value"对的数据结构?