トップページ > プログラム > 2015年12月26日 > S13iTXsn

書き込み順位&時間帯一覧

16 位/187 ID中時間01234567891011121314151617181920212223Total
書き込み数0000110000000000010000003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
443
C++相談室 part121 [無断転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part121 [無断転載禁止]©2ch.net
443 :デフォルトの名無しさん[sage]:2015/12/26(土) 04:41:01.32 ID:S13iTXsn
vector<shared_ptr<T>> list; があるとして、これの要素のconst参照を
const shared_ptr<T>& ref = list[0]; のように取ると、listに要素を追加した際に
参照先がおかしくなるのですが、何故こうなるんでしょうか?

https://ideone.com/3YLbwe
C++相談室 part121 [無断転載禁止]©2ch.net
445 :デフォルトの名無しさん[sage]:2015/12/26(土) 05:51:14.92 ID:S13iTXsn
>>444
それは知ってましたが、移動に応じて参照先も追従してくれるのかと思ってました
・・・よく考えたらするわけないですよね
なんかこういう勘違いをしてる時点でC++をよく分かってないのが明らかですねorz

あと、shared_ptr自体は本問題には全く関係ない話ですね
スレ汚し失礼しました
C++相談室 part121 [無断転載禁止]©2ch.net
469 :443[sage]:2015/12/26(土) 17:48:27.63 ID:S13iTXsn
>>457
const shared_ptr<T>& ref と参照にした理由は、shared_ptr自体のコピーコストを嫌ったためです
(その意味では仰るとおりconst付けるのは無意味でした)

同じ考えで、範囲for文では for (auto& ref : list) と参照で受けるのが半ば習慣になってました
これってforの中でlistの再配置が起こるような処理をしてたら大変なことになってたってことですよね
やばすぎる・・・orz
自分のようなアホは安全のためにも、shared_ptrを受けるときは問答無用でコピーにしたほうがいい気が


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。