queue.front () в C ++ возвращает странное значение - PullRequest
0 голосов
/ 02 июля 2019

Я пишу на 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}.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...