0

ベクターは、プッシュされたすべてのオブジェクトのコピーを作成する傾向があることを知っています。boost::shared_ptr私の質問は、共有ptr自体ではなく、ベクトルへのポインタを格納することが理にかなっているのかどうかです

4

3 に答える 3

1

パフォーマンスに関する質問に対する唯一の 100% の正解は、「プロフィールを見て確認する」です。

ただし、この特定のケースでは、shared_ptrs をそこに直接 (値で) 保持する必要があります。共有ポインタをコピーするオーバーヘッドは低いです。また、コンパイラが移動をサポートしている場合は、代わりに移動することさえありますが、おそらく を使用しているはずですよねstd::shared_ptr?

とにかく、そこにポインタだけを格納するにはどうすればよいでしょうか? shared_ptrs を動的に割り当てますか? 自分の所有権をどのように管理しますか?

于 2013-04-12T09:37:15.697 に答える
0

なぜ「高価」について尋ねるのですか?正しさ以外の最初の懸念は、「安全か」です。2 番目の懸念は、「読みやすく、保守しやすいか」です。パフォーマンスに敏感な分野で作業していることを (プロファイリングによって) 知っている場合、コストのみが懸念事項のトップ 5 に含まれます。それでも、ほとんどすべての場合に「安全第一」があります。

そう:

  • へのポインターを使用しないでくださいshared_ptr。安全で正しいものを取得するのは難しいためです。
  • へのポインターは使用しないでください。これshared_ptrは壊れやすく、解読が難しく、なぜそうしたのか誰もが疑問に思うからです (保守性)。
  • s のコピーがパフォーマンスの問題であることを本当に知っていて、プロファイリングによって知っていて、他のより安全で、より保守しやすく、同等にパフォーマンスの高いソリューションがない場合をshared_ptr 除き、へのポインターを使用しないでください。shared_ptr

tl;drへのポインタを使用しないでくださいshared_ptr

于 2013-04-12T10:17:42.820 に答える