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