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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
#1

std::deque - C++

14.05.2012, 17:14. Просмотров 1414. Ответов 4
Метки нет (Все метки)

Как известно при добавлении в конец вектора элементов(и не только в конец) может возникнуть перераспределение памяти что переместит данные в другое место и сделает недействительным итераторы,ссылки и указатели на эти данные.

Вопрос в замене: что бы уйти от этой проблемы можно ли применить std::deque, выполняет ли он перераспределение памяти?

Про std::deque можно прочитать что память управляется автоматически, что подразумеватся под этим непонятно...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2012, 17:14     std::deque
Посмотрите здесь:

Как работает std::deque? - C++
Пытаюсь разобраться в работе std-шного дека. Веб-серфинг дал следующее: Данные хранятся в куче небольшими блоками(массивами) в виде...

Как инициализировать объект типа std::deque<int>? - C++
Доброе время суток! Я видимо совсем не разбираюсь в шаблонах, так как не понимаю почему не работает:std::deque&lt;int&gt; d = {1, 2, 3, 4, 5}; ...

Контейнер deque - C++
Задание:(используя контейнер deque) ввести последовательность натуральных чисел,у конце которой 0.Не сохраняя всей последовательности в...

deque<float> - C++
Создать контейнер deque и заполнить его типом данных &lt;float&gt;, вывести на экран. Удалив одни элементы и заменив другие вывести на экран...

STL deque - C++
Устройство, основные операции и их стоимость, особенности использования deque. Ни где не могу найти стоимость выполнения основных...

Compair deque - C++
есть два списка. Теперь мне нужно сравнить элементы если х &lt;у то return (x+y) . я так думаю надо результат в 3 список записать как мне...

STL, deque, pair - C++
Здравствуйте, помогите пожалуйста разобраться. Есть такая очередь: deque&lt;pair&lt;int, timeval&gt; &gt; last_query Как работать с...

Deque - сравнение элементов - C++
Пусть даны две очереди X и Y, содержащие вещественные числа. Из каждой очереди одновременно извлекается по одному числу x и y...

vector, list, deque - C++
Пытаюсь разобраться, куда лучше какой контейнер применять, под какие задачи. Первый вопрос по списку: Сказано, что список удаляет любой...

deque iterator not dereferencable - C++
итак программа должна считывать из файла данные об автобусных маршрутах (имя водителя, номер маршрута и т.д.). После этого сортировать...

Написать свою реализацию deque - C++
Всем привет, требуется написать свою реализацию deque. Я до этого никогда не сталкивался с распределением памяти, аллокаторами и другими...

STL, deque Перераспределение памяти - C++
Есть книга, в ней написано такое о деке Можно ли пример увидеть, а-то чего-то непонятно. Пример когда все итераторы из-за...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
14.05.2012, 18:27     std::deque #2
Если добавлять в начало\конец, все ссылки останутся действительны, если удалять из начала\конца - останутся действительны все ссылки и итераторы. Так что если пользоваться только push/pop, то как минимум можно полагаться на ссылки.
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
14.05.2012, 18:36  [ТС]     std::deque #3
gray_fox,То есть при вставке в конец или в начало перераспределение не проиходит так?
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
14.05.2012, 18:44     std::deque #4
Цитата Сообщение от Avazart Посмотреть сообщение
То есть при вставке в конец или в начало перераспределение не проиходит так?
Может происходить, ибо дек, на сколько я знаю, реализуется как список массивов (т.н. страниц). Кончится место в странице - выделится новая, станет пуста - вон из памяти. Другое дело, что остальные элементы при этом останутся там же, где были. Вот здесь про это есть:
http://en.cppreference.com/w/cpp/container/deque/insert
http://en.cppreference.com/w/cpp/container/deque/erase
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
18.05.2012, 23:24  [ТС]     std::deque #5
Вот нашел картинку которая помагает понять (Николай Джосьютис "С++ Стандартная библиотека" стр169)
Миниатюры
std::deque  
Yandex
Объявления
18.05.2012, 23:24     std::deque
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru