1. C++ / Говнокод #2091

    +48.5

    1. 1
    2. 2
    3. 3
    4. 4
    while(!pVec.empty())
    {
             pVec.pop_back();
    }

    Сей артефакт остался в коде ввиду лености переписывать его в 100 файлах сразу после удаления того, ради чего собственно затевался while(!pVec.empty()) ... прямо скажем - отлов ЭТОГО занял немало времени и нервов... тк на первый взгляд оно должно... а что ты видишь в этом коде, %юзернейм% ?

    Запостил: Zeks, 02 Ноября 2009

    Комментарии (6) RSS

    • Упс, это немного не то, сорри, сотрите плз)))) Это уже "исправленная" версия XD
      Ответить
    • а чем pVec.clear() не угодил в этом случае?
      Ответить
      • Покопался... Не нашёл разницы...
        Сначала подумалось: вдруг pop_back память освобождает или деструктор вызывает на динамическую память. Нет. Похоже, что pVec.clear() вполне заменяет комбинацию с циклом.
        Ответить
        • В STL наверника должен быть аналог QDeleteAll из КуТ который перед очищением списка делает delete всем указателям в нем.
          Ответить
          • Для меня теперь стало абсолютно очевидно, что такого метода и быть не должно в STL контейнерах.
            Ни в коем случае! Это же что тогда будет? А если есть два контейнера, которые указывают на одно и тоже?
            Если мы хотим автоматического удаления, то нужно применять "умные" указатели, желательно Бустовые с подсчётом числа ссылок.
            Ответить

    Добавить комментарий