私のアプローチが正しいかどうかはわかりません。 ベクトルv
をFunction
への参照で渡しているので、実行後にベクターの内容が変更されます。C++で参照するローカルstd :: vectorを割り当てる
ベクターv
で直接作業できず、テンポラリベクターtemp
を使用することにした場合はどうすればよいですか? v = temp
で一時的にv
に割り当てていますか? Function
の実行後に掃引されるいくつかのメモリにv
ポイントを参照しませんか?
void Function(std::vector<bool> &v) {
std::vector<bool> temp(v.size(), false);
// some operations on vector temp
// ...
v = temp;
}
tempコンパイラが直接範囲外になるので、コンパイラの最適化ではコピーではなく自動的に移動が生成されますか? –
@ A.S.H可能性があります。この種の最適化は、標準によって言及されていません。保証されておらず、移植性がありません。だから、それを信頼できるものにするために、自分でそれをするのが良いです。 – songyuanyao
'Function'の後に' v'を使用しようとすると 'v'が' temp'を指し、 'temp'がもう存在しないので安全ではないはずです。参照の。 –