【发布时间】:2013-01-22 18:19:17
【问题描述】:
可能重复:
In C++, is it still bad practice to return a vector from a function?
在性能方面,当需要从函数中返回std::vector或std::string等“较重”的对象时,建议使用这种形式:
void func(std::vector<int> *dest)
{
}
而不是这种形式:
std::vector<int> func()
{
std::vector<int> arr;
// ...
return arr;
}
我假设第一种形式应该更快,但同时我经常看到第二种形式,例如 Qt API 经常返回 QString,可能是因为它更方便或更直观使用。
我还想知道是否有编译器优化可以在使用 return 语句时消除不必要的对象复制。
编辑
是否有今天仍在使用的任何流行的编译器不执行答案中提到的优化?
【问题讨论】:
-
是的,这叫返回值优化。
-
给你看的东西:Want Speed? Pass by Value
-
@K-ballo 抱歉,没有找到这个,所以我猜我的问题是重复的。
-
网络上有很多关于此的材料。搜索。