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 ソリューションは受け入れられません。
Edit2: Microsoft Visual Studio 2008 コンパイラを使用しています。