在函数中返回 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;
}
?
原文由 Morten 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 C++11 中,这是首选方式:
即按值返回。
对于 C++11,
std::vector
具有移动语义,这意味着在函数中声明的 局部 向量将在返回时 _移动_,在某些情况下,编译器甚至可以忽略移动。