170 похожих чатов

Такой вопрос. Представьте, что у вас есть std::vector(то есть последовательные

данные). Их очень много(скажем, миллиарды байт). Вам надо что-то заинсертить в начало. Аллоцировать и перезаписывать старую память очевидно очень долго и не круто(если, например, аллоцируете лишь 1 байт по сравнению с такими размерами массива). Есть ли у вектора какая-то встроенная оптимизация для такого?

Я подумал, что тут может все работать как порядковое размещение на диске в виде инод. Нам достаточно лишь указать что вот здесь начало данных, смещение вот такое у куска памяти, дальше идет вот этот кусок памяти(с приложенным указателем на начало и размер). Затем вот такой кусок и так далее что-то вроде списка кусков памяти

Это вопрос про оптимизацию вставки в начало и конец. Про вставку не в начало и конец интересно тоже как оптимизировали

11 ответов

33 просмотра

Такой «оптимизации» нет. STL-ный Вектор обязан хранить данные в непрерывном куске памяти. Что-то похожее на то, что вы описали, есть в std::deque

Если у вас огромный размер и надо вставку в начало, то вы неверно выбрали контейнер.

Vladislav-Vasil'ev Автор вопроса
Alexander "Ternvein" Isaev
Если у вас огромный размер и надо вставку в начало...

Скажем, если нужен относительно непрерывный(не не везде, а лишь в местах) контейнер Как такая структура называется?

Vladislav-Vasil'ev Автор вопроса
Alexander Pshenichnikov
Допустим, std::deque

Там тоже местами непрерывная память, да?

вы изобрели так называемый devector. это как вектор, но у него пустое место есть не только в конце аллокации, но и в начале, чтобы амортизировать не только аппенды, но и препенды. есть в boost

Ivan Sokolov
вы изобрели так называемый devector. это как векто...

> есть в boost https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRCbgkgXsyCJQEVmFVPbpi5eAcrdEAP4-yWGqqvOny-eQ&s

Ivan Sokolov
вы изобрели так называемый devector. это как векто...

Для такого можно по разному извращаться, зависит от того сколько вставок и куда. Может вектор векторов заюзать, чтобы менять только подвектора, например. Но задачи его мы не знаем, а про вставку в начало ты ему ответил.

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
embassy это топ фреймворк для эмбеддед на данный момент?
AS Sarb
23
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
Ребята, я 3 дня как вкатился в ардуино Думал на прогрессивном молодом языке Rust попилить что-нибудь А как-то грустно с библиотеками оказалось. Не подскажете почему так? Если...
AS Sarb
18
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Карта сайта