If you don't need dynamic growth and don't know the size of the buffer at compile time, when should unique_ptr<int[]>
be used instead of vector<int>
if at all?
Is there a significant performance loss in using vector
instead of unique_ptr
?
If you don't need dynamic growth and don't know the size of the buffer at compile time, when should unique_ptr<int[]>
be used instead of vector<int>
if at all?
Is there a significant performance loss in using vector
instead of unique_ptr
?
There is no performance loss in using std::vector
vs. std::unique_ptr<int[]>
. The alternatives are not exactly equivalent though, since the vector could be grown and the pointer cannot (this can be and advantage or a disadvantage, did the vector grow by mistake?)
There are other differences, like the fact that the values will be initialized in the std::vector
, but they won't be if you new
the array (unless you use value-initialization...).
At the end of the day, I personally would opt for std::vector<>
, but I still code in C++03 without std::unique_ptr
.