C++相談室 part124 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0249デフォルトの名無しさん (ワッチョイ 617b-7Ba6)
2016/04/27(水) 02:12:47.40ID:GuBYWkr/0例えば
void assign(const std::vector<double>& v){
member = v;
}
こうだと必ず1度コピーが動く。
void assign(std::vector<double> v){
member.swap(v);
}
こうだと引数がrvalueの場合最適化でコピーが動かない場合があるし、
C++11ならmoveになる。
swapのコストが低いのは言わなくてもわかるよね。
lvalueの場合でもコピーは1度
C++11以降で
void assign(const std::vector<double>& v);
void assign(std::vector<double>&& v);
二つ書いたときとのコスト差はswapのみ
■ このスレッドは過去ログ倉庫に格納されています