Вектор воздействия вставки векторовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вектор воздействия вставки векторов

Сообщение Anonymous »

Возьмите это:

Код: Выделить всё

std::vector v_data;
Внутренние векторы хранят около байтов (~256 байт каждый). В содержащем векторе хранится около (15-20) таких векторов. Каковы будут последствия вставки std::vector в начало этого вектора векторов, используя что-то вроде:

Код: Выделить всё

std::vector new_data{ ........ };
v_data.insert(v_data.begin(), new_data);
Теперь я понимаю, что векторы в содержащем векторе нужно будет переместить вниз, чтобы можно было вставить новый вектор, однако влияние должно быть минимальным, верно? В конце концов, перемещаются вниз 15-20 векторов, а не их содержимое.
На мой взгляд, содержащиеся в них векторы, которые на самом деле содержат данные, вообще не должны перемещать свои данные, не так ли? (Я предполагаю, что вектор содержит указатель на некоторую выделенную память, где хранятся его данные, и этот указатель должен оставаться действительным, даже если сам векторный объект перемещается) Или я совершенно ошибаюсь?
Этот код очень чувствителен ко времени, поэтому выполнение такой вставки, если все содержащиеся векторы также необходимо переместить, может стать проблемой.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ion-impact
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»