C ++中的queue.front()返回一个奇怪的值

时间:2019-07-02 03:16:44

标签: c++ queue

我正在用C ++编写代码并利用该库。 我的代码是这样的:

struct request {
    int order;
    float size;
};
typedef struct request req;
.. ...
std::queue <req> wait_queue;
// ...
for (int i = 0; i < 5; i++) {
    req r;
    r.order = i + 1;
    r.size = 100;
    wait_queue.push(r);
}
// ...
if (!wait_queue.empty()) {
    req r = wait_queue.front();
    // do something...
}

req r不冲突的地方,因为实际上它们是在不同的函数中定义的。 现在,我知道变量已正确保存,因为当我运行gdb并键入p wait_queue时,它会显示:

(gdb) $1 = std::queue wrapping: std::deque with 5 elements = {{order = 1, size = 100}, {order = 2, size = 100}, {order = 3, 
    size = 100}, {order = 4, size = 100}, {order = 5, size = 100}}

但是在r = wait_queue.front()之后,p r显示:

(gdb) $2 = {order = 6417952, size = 0}

所以我想知道这是怎么发生的,我该怎么做才能确保r握住{order = 1, size = 100}

谢谢!

0 个答案:

没有答案