QList
и QMap
отличаются способом организации данных.Это приводит к разной производительности и немного другому потреблению памяти (для большинства случаев использования последнее обычно не имеет значения).Вы можете найти вычислительную сложность в документации Qt .Если вы храните много элементов, это может иметь большое значение.Подумайте о том, как часто вы хотите получать доступ к данным при выборе контейнера (поиск или вставка, а не удаление).
[Имейте в виду, однако, что алгоритмическая сложность является теоретическим свойством, которое полезно только для большихп.На практике линейный поиск по массиву с небольшим количеством элементов (<1000) часто превосходит списки / деревья из-за <a href="https://en.wikipedia.org/wiki/Locality_of_reference" rel="nofollow noreferrer"> местоположения ссылки .Если вам небезразлична производительность, не угадывайте, всегда измеряйте.]
Оба содержат неупорядоченные данные
На самом деле это не так для QMap
.QMap
реализован в виде самобалансирующегося бинарного дерева поиска , которое представляет собой отсортированную структуру данных.
Кстати: вы часто можете реализовать свой код универсальным способом, который облегчает переключениепозже к другому типу контейнера (например, если шаблон доступа изменяется или ваши предположения оказываются неверными).Использование auto
может помочь сделать это безболезненным.