vector<MyPoint>
предпочтительнее, потому что MyPoint
вероятно:
- должно быть меньше
vector<double>
(вы можете проверить это с помощью sizeof
) и / или
- чтобы сделать меньше ассигнований. Векторный объект сам по себе небольшой, но обычно указывает на данные в куче. Небольшие векторы можно оптимизировать, чтобы избежать дополнительного выделения путем встраивания данных в векторный объект, но не рассчитывайте на это, поэтому
- чтобы снизить затраты на инициализацию, уничтожение и копирование.
Например, на моем 32-битном gcc, std::vector<double>
имеет размер 12, тогда как MyPoint
имеет размер 16, но вектор делает дополнительное выделение. В 64-битной реализации MyPoint
почти наверняка будет того же размера, но std::vector
, вероятно, будет больше.
Кроме того, вектор представляет упорядоченный контейнер переменного размера, использующий непрерывную память. Таким образом, это возможно излишне для массива размера 2, так как использование вектора создает возможность изменения размера.