1

2つのデータ構造内の同じオブジェクトにunique_ptrを保持したいとします。それを行う方法はありますか、それとも別の方法を使用することを検討する必要がありますか?

私の場合、高速検索をサポートするマップがあり、他の2つのデータ構造でキーと値への参照を保持したい..(リストと言う)

経験豊富な C++ 開発者からのアドバイス、または Unique_ptr の代替案についてぜひお聞きしたいと思います。

前もって感謝します

4

1 に答える 1

6

2つのデータ構造内の同じオブジェクトにunique_ptrを保持したいのですが、それを行う方法はありますか

そのとおり!現在、独自の所有権unique_ptrセマンティクスを伝えていますが、他の場所からの参照も保持できないということはありません。それを所有できるのは 1 つのオブジェクトだけであることに注意してください。他のデータ構造は必然的に従属しなければなりません。結果として、そのオブジェクトは、無効なメモリ アクセスを回避するために、一意のポインターを所有するオブジェクトよりも短い寿命を持つ必要があります。

ここで、1 つのオブジェクトに を保持させるだけで、オブジェクトは最初のオブジェクトのアドレスを指すunique_ptr<T>raw を保持します ( 経由で取得)。T*.get()

あなたのケースでその状況を実現できない場合unique_ptrは、適切なツールではありませんshared_ptr。代わりに使用してください。

于 2013-07-29T18:11:36.513 に答える