vector<MyPoint>
является предпочтительным, поскольку MyPoint
вероятно:
- быть меньше, чем
vector<double>
(вы можете проверить это с sizeof
), и/или
- сделать меньше ассигнований. Сам векторный объект является небольшим, но обычно указывает на данные о куче. Возможно, чтобы небольшие векторы были оптимизированы, чтобы избежать дополнительного распределения путем вложения данных в векторный объект, но не рассчитывайте на это, поэтому
- имеет меньшие накладные расходы при инициализации, уничтожении и копировании.
Например, на моем 32-битном НКУ, std::vector<double>
имеет размер 12, в то время как MyPoint
имеет размер 16, но вектор делает дополнительное выделение. В 64-битной реализации MyPoint
почти наверняка будет того же размера, но std::vector
, вероятно, будет больше.
Кроме того, вектор представляет собой упорядоченный контейнер переменного размера с непрерывной памятью. Таким образом, это, возможно, слишком велико для массива размера 2, поскольку использование вектора приводит к возможности изменения размера.
До тех пор, пока вы не измерили, напишите код, который легче читать (и ИМО - это тот, который использует 'struct'). Только жертву читабельности, когда вы измерили, и «вектор» «векторных» оказывается значительно быстрее. – sbi