2つのデータ構造内の同じオブジェクトにunique_ptrを保持したいとします。それを行う方法はありますか、それとも別の方法を使用することを検討する必要がありますか?
私の場合、高速検索をサポートするマップがあり、他の2つのデータ構造でキーと値への参照を保持したい..(リストと言う)
経験豊富な C++ 開発者からのアドバイス、または Unique_ptr の代替案についてぜひお聞きしたいと思います。
前もって感謝します
2つのデータ構造内の同じオブジェクトにunique_ptrを保持したいのですが、それを行う方法はありますか
そのとおり!現在、独自の所有権unique_ptr
セマンティクスを伝えていますが、他の場所からの参照も保持できないということはありません。それを所有できるのは 1 つのオブジェクトだけであることに注意してください。他のデータ構造は必然的に従属しなければなりません。結果として、そのオブジェクトは、無効なメモリ アクセスを回避するために、一意のポインターを所有するオブジェクトよりも短い寿命を持つ必要があります。
ここで、1 つのオブジェクトに を保持させるだけで、オブジェクトは最初のオブジェクトのアドレスを指すunique_ptr<T>
raw を保持します ( 経由で取得)。T*
.get()
あなたのケースでその状況を実現できない場合unique_ptr
は、適切なツールではありませんshared_ptr
。代わりに使用してください。