【发布时间】:2011-06-29 09:50:26
【问题描述】:
如果我有一个返回 STL 容器的函数,我是否会复制标准容器的全部内容?
例如这是:
void Foo( std::vector< std::string >* string_list );
比这更好:
std::vector< std::string > Foo();
容器里有什么重要吗?例如会返回一个这样的容器:
struct buzz {
int a;
char b;
float c;
}
std::map< int, buzz > Foo();
比这更昂贵的操作:
std::map< int, int > Foo();
谢谢, 保罗H
编辑: 这是 C++03。不幸的是,C++0x 解决方案是不可接受的。
编辑2: 我正在使用 Microsoft Visual Studio 2008 编译器。
【问题讨论】:
-
更重要的是,这有关系吗?不。将代码编写为 clean 和 straightforward,然后当你完成后,你可以使用分析器来查看慢速部分是什么。如果从函数返回会占用大量时间,那么为了提高性能,混淆代码才是值得的。
标签: c++ optimization stl containers standard-library