Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2010, 20:11   #1
ZigaZaga
Пользователь
 
Регистрация: 20.02.2010
Сообщений: 27
По умолчанию чем vector лучше deque?

как я понял стловская дека - это почти тот же вектор, только ещё можно добавлять элементы в начало.
т.е. имеет только преимущества над вектором, тогда зачем нужен вектор?+
ZigaZaga вне форума Ответить с цитированием
Старый 19.03.2010, 21:10   #2
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Deque используется для создания двусторонних очередей, а vector для динамических массивов. Причем вектор имитирует обычный массив, т.е. элементы следуют один за другим в памяти, а в деке элементы могут быть раскиданы, что может привести к ошибке при использовании указателей.
k1r1ch вне форума Ответить с цитированием
Старый 19.03.2010, 21:19   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну как бы и у пулемета убойная сила лучше, чем у пистолета!
Вектор - контейнер универсальный, STL-евская ипостась массива. Дек оптимизирован под удаление/вставку элементов, причем с двух концов. Если элементы не надо туда-сюда гонять в контейнер/из контейнера, то зачем использовать деку?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 19.03.2010, 22:24   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Саттер, - Решение сложных задач на С++, Глава 1, задача 1.14.

Обсуждение в Usenet (на аглицком), вылившееся впоследствии в вышеназванную главу книги.
Vago вне форума Ответить с цитированием
Старый 19.03.2010, 23:41   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

дек создается блоками элементов, то есть его части могут находиться в разных участках памяти, тогда как вектор создается последовательно элемент за элементом, и когда память в каком-то секторе заканчивается, и вектору уже нет места продолжать свой рост, он ищет новое место в памяти, перезаписывается ПОЛНОСТЬЮ туда, а затем удаляет из предыдущего места. Дек напротив - закончилась память при последовательном добавлении? Не беда. На этом он заканчивает один из блоков и создает следующий в другом месте памяти, ничего не перезаписывая. Вообще не понимаю, зачем нужен вектор, когда есть дек) но вот)
PS: хотя сам исходя непонятно из каких соображений ( может просто привычка ) обычно юзаю вектор)
capta1n вне форума Ответить с цитированием
Старый 20.03.2010, 17:43   #6
ZigaZaga
Пользователь
 
Регистрация: 20.02.2010
Сообщений: 27
По умолчанию

Гром, там если даже не надо дёргать элементы туда-сюда почему не использовать деку? чем это воообще может быть хуже чем вектор?


или может быть из-за того, что у деки больше методов и это как-то увеличивает размер кода?
ZigaZaga вне форума Ответить с цитированием
Старый 20.03.2010, 21:59   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Рискну предположить, что произвольный доступ у вектора быстрее. И, судя по тестам, намного.
Carbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C чем лучше изучать SQL? prog38 Свободное общение 24 31.07.2009 17:58
В чем лучше сделать? KinderX SQL, базы данных 0 26.07.2009 12:22
Чем лучше компилировать? mmx358 Паскаль, Turbo Pascal, PascalABC.NET 13 30.06.2009 17:05
На чем лучше писать? PilGrim Свободное общение 3 31.03.2009 23:45
Чем лучше всего протирать монитор Иллидан Компьютерное железо 20 09.08.2008 07:23