О, контейнеры...

Mar 01, 2015 02:26

Долго искал, почему программа падает.
Оказалось, что в QMap присутствуют нулевые указатели.
Защитился, поставил проверку. Падать перестало.
Долго искал, откуда они берутся.
Оказалось, операция [], если ключ отсутствует, автоматически конструирует пару конструкторами по умолчанию И ВСТАВЛЯЕТ ЕЁ В КОНТЕЙНЕР. Как-то...не очевидненько. Нет, оно совершенно правильно при записи, но вот при чтении...
Загуглил, оказывается, std::map ведёт себя так же.
Для себя сделал вывод, что если есть вероятность отсутствия пары в контейнере, то при его чтении вместо [] надо использовать QMap::value().

программирование, c++

Previous post Next post
Up