1

C ++で消去削除イディオムを使用する場合、参照渡しする必要がありますか?

例えば:

void Country::clean()
{
cities.erase( std::remove_if(
  cities.begin(),
  cities.end(),
  [](City city) -> bool { return city.getNumberOfBuildings() == 0; }
),
  cities.end()
  );
}

ラムダ関数の行を次のように変更した方がよいかもしれません。

[](City &city) -> bool { return city.getNumberOfBuildings() == 0; }

都市を参照渡ししますか?

ありがとう

4

1 に答える 1

5

コピーを作成してもメリットがないため、おそらく参照を渡す必要があります。しかし、あなたがすべきことは、const参照を使用することです:

[](const City &city) -> bool { return city.getNumberOfBuildings() == 0; }

この場合、戻り値の型を指定する必要はありません。

于 2013-06-06T14:48:58.667 に答える