Это зависит от того, что вы ищете.Если вы просто хотите получить массив двойных размеров с изменяемым размером, перейдите с
std::vector<double>
Пример:
std::vector<double> v;
v.push_back(23.0);
std::cout << v[0];
Если для вас важно владеть правами владения указанным массивом, используйте, например,
std::shared_ptr<std::vector<double>>
Пример:
std::shared_ptr<std::vector<double>> v1(new std::vector<double>);
v1->push_back(23.0);
std::shared_ptr<std::vector<double>> v2 = v1;
v2->push_back(9.0);
std::cout << (*v1)[1];
В качестве альтернативы, Boost имеет
boost::shared_array
, который служит аналогичной цели.Смотрите здесь:
http://www.boost.org/libs/smart_ptr/shared_array.htm
Что касается нескольких преимуществ / недостатков shared_ptr, то:
Плюсы
- Автоматическое освобождение общего ресурсана основе подсчета ссылок - помогает избежать утечек памяти и других проблем, связанных с тем, что объекты не освобождаются, когда они должны быть
- . Может упростить написание кода, исключающего исключительные ситуации
Минусы
- Затраты памяти для хранения счетчика ссылок могут быть значительными для небольших объектов
- Производительность может быть хуже, чем для необработанных указателей (но измерить это)