2013-05-14 5 views
4

Я нахожусь на нескольких строках от проекта Qt до добавления в Qvector каждые 1с. Я заметил, что в STL deque может иметь лучшую производительность при добавлении нового элемента в конец этого вектора. Каков эквивалентный или похожий способ Qt? Потому что я не нахожу в Qt-библиотеках.Что эквивалентно std :: deque в Qt?

Хулио

ответ

4

Там нет прямого эквивалента в std::deque класса в QT.

Однако, ваш лучший выбор - использовать QList.

Вот что документация говорит о СПОКОЙНЫХ контейнерных классах:

Для большинства целей, QList правильного класс использовать. Его API на основе индексов более удобен, чем API-интерфейс, основанный на итераторе QLinkedList, и обычно он быстрее, чем QVector, из-за того, как он хранит свои элементы в памяти. Он также расширяется до меньшего количества кода в вашем исполняемом файле.

В любом случае, если вы только добавляете предметы один раз в секунду, не будет большого влияния на выбор одного над другим.

+0

Правильно ... после проверки документации, я решил использовать QList. Благодаря! – colddie

1

Нет необходимости иметь эквивалент Qt для каждого контейнера std, вы можете использовать std :: deque, если это то, что вам нужно.

Во всяком случае, обратите внимание, что для случая, когда вы делаете много вставок в конце вектора как std::vector и QVector имеют функцию член с именем заповедник (см ссылки), которые могут быть использованы для предварительного распределяет больший буфер и быстрее вставлять вставки.