Форум программистов, компьютерный форум CyberForum.ru

Как в памяти представляется двусторонняя очередь (deque)? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
rovel
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 25
18.05.2012, 22:46     Как в памяти представляется двусторонняя очередь (deque)? #1
Люди пожалуйста помогите разобраться, как в памяти представляется двусторонняя очередь (deque), типа нарисовать таблицу ну память и схематично показать, как эта двусторонняя очередь работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2012, 22:46     Как в памяти представляется двусторонняя очередь (deque)?
Посмотрите здесь:

Двусторонняя очередь C++
двусторонняя очередь C++
C++ Определить количество и сумму цифр в введенном натуральном числе. Введенное натуральное число представляется как единственное число, расположив цифры
Какой объем памяти занимает пустая двусторонняя очередь (deque)? C++
Класс «Дек» (двусторонняя очередь) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
18.05.2012, 23:25     Как в памяти представляется двусторонняя очередь (deque)? #2
std::deque
rovel
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 25
19.05.2012, 00:35  [ТС]     Как в памяти представляется двусторонняя очередь (deque)? #3
допустим в памяти у нас хранится какое то число, мы можем добавляться и удалять сначала и конца его цифры если у нас дек?если да, то как это делается, не могли бы вы рассказать?
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
19.05.2012, 00:54     Как в памяти представляется двусторонняя очередь (deque)? #4
Нигде не видил чтоб описывался подобный процес.
Но предпологаю что если в выделенном куске памяти еще есть зарезервированное место (как в векторе) если нет, то выделяется новый кусок и добавляется указатель на него (как в листе).
rovel
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 25
25.05.2012, 14:54  [ТС]     Как в памяти представляется двусторонняя очередь (deque)? #5
я показал преподователю эту картинку двусторонней очереди , он мне говорит, типа что нужно ,чтобы реализовать такую байду?какие переменные, указатели?Люююдиии помогите разобраться
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
25.05.2012, 22:22     Как в памяти представляется двусторонняя очередь (deque)? #6
Нужно "хранилище" в котором будут храниться указатели на все участки памяти.
Ну а чем может быть это хранище - вопрос.
В принципе это может быть тот же vector<T*> или list<T*> в который при необходимости будет добаляться указатель на массив(новый участок памяти)
Но тут можно лишь строить догадки... например если участки памяти выделяются разной длины то кроме указателя на массив нужно еще хранить и размер массива.
Как оно в действительности реализовано в STL я не встречал.
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
26.05.2012, 04:23     Как в памяти представляется двусторонняя очередь (deque)? #7
Можно сделать на основе 2-х векторов и абстрактно считать что один увеличивается в одну сторону, а другой в другую. Тогда будет быстрое добавление и удаление элементов в конец и начало.
Только в такой системе возникнут проблемы если в одном из векторов удалятся все элементы и удаление перекинется на другой. В таких случаях их надо балансировать, в идеале чтобы в каждом было поровну элементов.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
26.05.2012, 04:35     Как в памяти представляется двусторонняя очередь (deque)? #8
Damaks- это будет не то что нужно так как vector делает перераспределение, а deque- не должен это делать.Из за этого возможно снижение эффективности и невалидность итераторов

Поэтому если и использовать vector то строго постоянного размера
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
26.05.2012, 04:37     Как в памяти представляется двусторонняя очередь (deque)? #9
Скорее на основе 2 списков
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
26.05.2012, 04:48     Как в памяти представляется двусторонняя очередь (deque)? #10
Скорее на основе 2 списков
Думаю сильно круто...
А доступ к элементам?

Добавлено через 5 минут
Я думаю достаточно что-то вроде vector<pair<T*,size_t> > v_ptr; и обычных массивов T[size];
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
26.05.2012, 14:43     Как в памяти представляется двусторонняя очередь (deque)? #11
Цитата Сообщение от Avazart Посмотреть сообщение
Я думаю достаточно что-то вроде vector
Нельзя вектор, т.к. при добавлении может быть перераспределение памяти и все итераторы\ссылки на остальные элементы станут недействительны. Голосую за список массивов:
list<value_type [page_size]>.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
26.05.2012, 15:41     Как в памяти представляется двусторонняя очередь (deque)? #12
gray_fox вектор как хранище ссылок, а не хранилеще объектов - для объектов обычный массив
Но list тоже подходит только время доступа возможно увеличится...
rovel
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 25
30.05.2012, 20:39  [ТС]     Как в памяти представляется двусторонняя очередь (deque)? #13
Знающие люди, пожалуйста помогите понять, что такое двустороняя очередь, простая очередь, списки и двусвязные списки...Я перерыл инет, не могу ничего стоящего найти.В чем отличие простой очереди от списка?В чем отличие очереди от двусторонней очереди?В чем отличие двусторонней очереди от двусвязного списка?или в чем отличие двусторонней очереди от списка? или дайте ссылку на сайт , где все это есть...ато я уже запутался.........
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
30.05.2012, 20:48     Как в памяти представляется двусторонняя очередь (deque)? #14
Блин что за привычка сразу интернет?
Ведь есть еще и книги...к стати я в той теме указал от куда рисунок вырезал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2012, 21:46     Как в памяти представляется двусторонняя очередь (deque)?
Еще ссылки по теме:

Создание ДЕК (как стэк только о двух концах) без <deque> C++
Как работает std::deque? C++
STL, deque Перераспределение памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rovel
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 25
30.05.2012, 21:46  [ТС]     Как в памяти представляется двусторонняя очередь (deque)? #15
по этой книге я не могу все разобрать...
Yandex
Объявления
30.05.2012, 21:46     Как в памяти представляется двусторонняя очередь (deque)?
Ответ Создать тему
Опции темы

Текущее время: 10:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru