Efficient way to return a std::vector in c++

c++, return-value, stdvector

Solution

In C++11, this is the preferred way:

std::vector<X> f();

That is, return by value.

With C++11, `std::vector` has move-semantics, which means the local vector declared in your function will be moved on return and in some cases even the move can be elided by the compiler.

Problem

How much data is copied, when returning a `std::vector` in a function and how big an optimization will it be to place the std::vector in free-store (on the heap) and return a pointer instead i.e. is: ``` std::vector *f() { std::vector *result = new std::vector(); /* Insert elements into result */ return result; } ``` more efficient than: ``` std::vector f() { std::vector result; /* Insert elements into result */ return result; } ``` ?

Original source

Related problems