Дмитрий
5 августа 2020 г. 17:04

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

empty queue, pop, Queue

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

  1. std::queue<int> q;
  2. bool is_empty=q.empty();
  3. size_t sz=q.size();
  4. q.pop();
  5. is_empty=q.empty();
  6. sz=q.size();
  7.  

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

2

Вам это нравится? Поделитесь в социальных сетях!

2
Evgenii Legotckoi
  • 5 августа 2020 г. 17:23
  • Ответ был помечен как решение.

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

    Дмитрий
    • 5 августа 2020 г. 17:24

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

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь