Сколько копий данных при возврате функции std::vector в функции и насколько большой будет оптимизация, нужно разместить std::vector в свободном хранилище (в куче) и вернуть указатель, а именно:
std::vector *f()
{
std::vector *result = new std::vector();
/*
Insert elements into result
*/
return result;
}
более эффективен, чем:
std::vector f()
{
std::vector result;
/*
Insert elements into result
*/
return result;
}
?