Дмитрий
05 серпня 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
  • 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
      • Останні коментарі
      • Evgenii Legotckoi
        16 квітня 2025 р. 17:08
        Благодарю за отзыв. И вам желаю всяческих успехов!
      • IscanderChe
        12 квітня 2025 р. 17:12
        Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
      • AK
        01 квітня 2025 р. 11:41
        Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
      • Evgenii Legotckoi
        09 березня 2025 р. 21:02
        К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
      • VP
        09 березня 2025 р. 16:14
        Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…