Дмитрий
05 серпня 2020 р. 17:04

Поведение пустой очереди std::queue

empty queue, pop, Queue

Всем привет!
Потребовалость тут использовать очередь. Но случайно наткнулся на странное поведение: если в очереди ничего нет, и сделать pop(), то empty() начинает возвращать false. Винда, MinGW.

std::queue<int> q;
bool is_empty=q.empty();
size_t sz=q.size();
q.pop();
is_empty=q.empty();
sz=q.size();

первый раз sz=0, второй раз = 4294967295
Или так лучше не делать? Нужно перед pop() проверять на пустоту?

2

Вам це подобається? Поділіться в соціальних мережах!

2
Evgenii Legotckoi
  • 05 серпня 2020 р. 17:23
  • Відповідь була позначена як рішення.

Добрый день.
Перед выполнением pop() всегда делайте проверку на empty()
Там даже в глубинах исходников есть такая строчка "deque empty before pop" в качестве ошибки.

    Дмитрий
    • 05 серпня 2020 р. 17:24

    Спасибо, так и сделал.

      Коментарі

      Only authorized users can post comments.
      Please, Log in or Sign up