如果我有一个返回 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();
谢谢,保罗
编辑: 这是 C++03。不幸的是,C++0x 解决方案是不可接受的。
Edit2: 我正在使用 Microsoft Visual Studio 2008 编译器。