Как динамические массивы (std::vector) работают в С++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как динамические массивы (std::vector) работают в С++?

Сообщение Anonymous »

Согласно тому, что я слышал, std::vector хранит данные последовательно
и когда вы пытаетесь добавить или удалить элемент, он увеличивается или уменьшается за счет выделения новой памяти и копирует все из старой памяти в новую память с изменениями и удаляет старую память.
в коде ниже у меня есть конструктор копирования
он говорит, что копируется каждый раз, когда класс копируется
он дал мне 6 скопированных сообщений, когда у меня было 3 элемента и которые было нормально
но когда я добавил еще один элемент, он выдал мне 7 сообщений.
Разве он не должен был дать мне 10?
И как это оптимизировать?
#include
#include

struct Vertex
{
int x, y, z;

Vertex(int x, int y, int z) : x(x), y(y), z(z)
{
}

Vertex(const Vertex &vetrex) : x(vetrex.x), y(vetrex.y), z(vetrex.z)
{
std::cout

Подробнее здесь: https://stackoverflow.com/questions/693 ... -work-in-c
Ответить

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

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

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

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

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