When delivering a std::vector in a function, how much data is duplicated, and how much of an optimization will it be to place the std::vector in free-store (on the heap) and provide 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;
} 
?