1. ホーム
  2. c++

[解決済み】c++でstd::vectorを返すための効率的な方法

2022-01-22 05:06:24

質問

を返すとき、どれくらいのデータがコピーされるのでしょうか? std::vector また,std::vector をフリーストア(ヒープ上)に置き,代わりにポインタを返すことは,どの程度の最適化になるのでしょうか?

std::vector *f()
{
  std::vector *result = new std::vector();
  /*
    Insert elements into result
  */
  return result;
} 

よりも効率的である。

std::vector f()
{
  std::vector result;
  /*
    Insert elements into result
  */
  return result;
} 

?

解決方法は?

C++11では、この方法が推奨されています。

std::vector<X> f();

つまり、値で返す。

C++11の場合。 std::vector は移動セマンティクスを持ち、つまり ローカル ベクトルは、関数内で宣言された 移動 を返すと、場合によってはその移動さえもコンパイラによって省略されることがあります。