|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.03.2010, 20:11 | #1 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 27
|
чем vector лучше deque?
как я понял стловская дека - это почти тот же вектор, только ещё можно добавлять элементы в начало.
т.е. имеет только преимущества над вектором, тогда зачем нужен вектор?+ |
19.03.2010, 21:10 | #2 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Deque используется для создания двусторонних очередей, а vector для динамических массивов. Причем вектор имитирует обычный массив, т.е. элементы следуют один за другим в памяти, а в деке элементы могут быть раскиданы, что может привести к ошибке при использовании указателей.
|
19.03.2010, 21:19 | #3 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Ну как бы и у пулемета убойная сила лучше, чем у пистолета!
Вектор - контейнер универсальный, STL-евская ипостась массива. Дек оптимизирован под удаление/вставку элементов, причем с двух концов. Если элементы не надо туда-сюда гонять в контейнер/из контейнера, то зачем использовать деку?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
19.03.2010, 22:24 | #4 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Саттер, - Решение сложных задач на С++, Глава 1, задача 1.14.
Обсуждение в Usenet (на аглицком), вылившееся впоследствии в вышеназванную главу книги. |
19.03.2010, 23:41 | #5 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
дек создается блоками элементов, то есть его части могут находиться в разных участках памяти, тогда как вектор создается последовательно элемент за элементом, и когда память в каком-то секторе заканчивается, и вектору уже нет места продолжать свой рост, он ищет новое место в памяти, перезаписывается ПОЛНОСТЬЮ туда, а затем удаляет из предыдущего места. Дек напротив - закончилась память при последовательном добавлении? Не беда. На этом он заканчивает один из блоков и создает следующий в другом месте памяти, ничего не перезаписывая. Вообще не понимаю, зачем нужен вектор, когда есть дек) но вот)
PS: хотя сам исходя непонятно из каких соображений ( может просто привычка ) обычно юзаю вектор) |
20.03.2010, 17:43 | #6 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 27
|
Гром, там если даже не надо дёргать элементы туда-сюда почему не использовать деку? чем это воообще может быть хуже чем вектор?
или может быть из-за того, что у деки больше методов и это как-то увеличивает размер кода? |
20.03.2010, 21:59 | #7 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Рискну предположить, что произвольный доступ у вектора быстрее. И, судя по тестам, намного.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |