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();
おかげで、 PaulH
編集: これはですC++ 03。残念ながら、C++ 0xソリューションは受け入れられません。
Edit2: 私はMicrosoft Visual Studio 2008コンパイラを使用しています。
もっと重要なことは重要ですか?いいえ、* clean *と* straightforward *のコードを書いておけば、プロファイラを使って遅い部分が何であるかを知ることができます。関数からの復帰が大量の時間を費やしている場合は、パフォーマンスのためにコードを難読化するだけの価値があります。 – GManNickG