Контейнеры Qt - что мне выбрать?

Qt предлагает набор STL контейнеры

Однако нет доступного контейнера, в котором хранятся упорядоченные значения по их порядку (например, std::set ) и QSet по некоторым причинам ведет себя как std::unordered_set, Я понимаю что наверное O(1) поиск в названной структуре данных "set" может быть отличной вещью, но я, конечно, не могу понять, почему было принято это решение.

Какой контейнер следует использовать для хранения упорядоченных коллекций предметов (подозреваю, что QMap с вымышленными значениями - очень плохой выбор) и почему не Qt предложить что-то вроде std::set?

Я думаю, что может быть какая-то техническая причина, но, к сожалению, я не могу придумать одну.

1 ответ

Решение

Из Википедии:

Haavard Nord и Eirik Chambe-Eng (первоначальные разработчики Qt и соответственно генеральный директор и президент Trolltech) начали разработку "Qt" в 1991 году.

Также из Википедии о STL:

Эндрю Кениг из Bell Labs не узнал о работе и попросил Степанова представить основные идеи на совещании комитета ANSI/ISO по стандартизации C++ в ноябре 1993 года. Ответ комитета был чрезвычайно благоприятным и привел к тому, что Кениг обратился с просьбой представить официальное предложение ко времени встречи в марте 1994 года. Несмотря на огромную нехватку времени, Алекс и Мэн смогли подготовить проект предложения, который получил предварительное одобрение на этом совещании.

И от самого Человека:

"Как я часто говорил, я считаю, что не отправлять большую стандартную библиотеку - это моя самая большая ошибка". Бьярн Страуструп

Qt разрабатывается самостоятельно. Такие вот дела. Используйте QMap и продолжайте свою жизнь.:)

(Примечание: в Qt есть неупорядоченная карта, она называется QHash)

Если вы не можете придумать что-то полезное или интересное, чтобы поместить его в слот значения, то ваша программа, вероятно, недостаточно сложна, чтобы суетиться. Есть ли в вашем ключевом объекте элементы данных, которые вы могли бы так же легко установить на карте? Неужели ты не можешь придумать что-нибудь, чтобы положить туда?

Если вы действительно тратите впустую символ на каждую запись, то является ли это реальным узким местом в вашей системе? У вас есть метрики, подтверждающие это? И т. Д.

Другие вопросы по тегам