pimplイディオムを使用していくつかのオブジェクトを作成してきましたが、を使用するか、を使用するかがわかりませstd::shared_ptr
んstd::unique_ptr
。
私はそれがより効率的であることを理解していますが、これらのオブジェクトはとにかく比較的重いので、オーバーstd::unique_ptr
のコストは比較的小さいので、これは私にとってそれほど問題ではありません。std::shared_ptr
std::unique_ptr
私は現在std::shared_ptr
、柔軟性が高いという理由だけで取り組んでいます。たとえば、を使用するとstd::shared_ptr
、これらのオブジェクトのコピーを呼び出し元に返すことができる一方で、これらのオブジェクトをハッシュマップに格納してすばやくアクセスできます(イテレータまたは参照はすぐに無効になる可能性があるため)。
ただし、変更はすべてのコピーに影響するため、これらのオブジェクトは実際にはコピーされていません。したがって、std::shared_ptr
コピーの使用と許可は、ある種のアンチパターンまたは悪いことであるのではないかと思いました。
これは正しいです?