Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Эксперт С++
8354 / 6092 / 610
Регистрация: 10.12.2010
Сообщений: 28,390
Записей в блоге: 29
1

std::deque

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


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

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

Про std::deque можно прочитать что память управляется автоматически, что подразумеватся под этим непонятно...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2012, 17:14
Ответы с готовыми решениями:

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

Как устроена std::deque внутри ?
Не могу себе представить возможную внутреннюю реализацию этого контенера, чтоб она удовлетворяла...

Разделить std::deque на заданное количество деков
Имеется дек, нужно его разделить на отдельные деки. Это задание я сделал когда знал точное...

Как инициализировать объект типа std::deque<int>?
Доброе время суток! Я видимо совсем не разбираюсь в шаблонах, так как не понимаю почему не...

4
What a waste!
1588 / 1287 / 173
Регистрация: 21.04.2012
Сообщений: 2,696
14.05.2012, 18:27 2
Если добавлять в начало\конец, все ссылки останутся действительны, если удалять из начала\конца - останутся действительны все ссылки и итераторы. Так что если пользоваться только push/pop, то как минимум можно полагаться на ссылки.
0
Эксперт С++
8354 / 6092 / 610
Регистрация: 10.12.2010
Сообщений: 28,390
Записей в блоге: 29
14.05.2012, 18:36  [ТС] 3
gray_fox,То есть при вставке в конец или в начало перераспределение не проиходит так?
0
What a waste!
1588 / 1287 / 173
Регистрация: 21.04.2012
Сообщений: 2,696
14.05.2012, 18:44 4
Цитата Сообщение от Avazart Посмотреть сообщение
То есть при вставке в конец или в начало перераспределение не проиходит так?
Может происходить, ибо дек, на сколько я знаю, реализуется как список массивов (т.н. страниц). Кончится место в странице - выделится новая, станет пуста - вон из памяти. Другое дело, что остальные элементы при этом останутся там же, где были. Вот здесь про это есть:
http://en.cppreference.com/w/c... que/insert
http://en.cppreference.com/w/c... eque/erase
1
Эксперт С++
8354 / 6092 / 610
Регистрация: 10.12.2010
Сообщений: 28,390
Записей в блоге: 29
18.05.2012, 23:24  [ТС] 5
Вот нашел картинку которая помагает понять (Николай Джосьютис "С++ Стандартная библиотека" стр169)
1
Миниатюры
std::deque  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2012, 23:24

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

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка...

STL std::set, std::pair, std::make_pair
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы....

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...

Std::begin() ,std::end(),std::copy
...// int main() { std::vector&lt;double&gt; data;//Работает cout &lt;&lt; std::begin(data); ...

Std::bind, std::mem_fun, std::mem_fn
В чем разница между функциями std::bind, std::mem_fun, std::mem_fn?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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