2012-01-17 11 views
2

ヒープ割り当てオブジェクトのコレクションを管理するのに便利なboost ptr_vectorが見つかりました。ポインタコレクションライブラリは非常にいいですが、残念ながら、私は1つのことで止められています。boost :: ptr_vectorのリファレンスではなくポインタを取得

私のコードのもう1つの部分は、ptr_vector内のオブジェクトのいずれかへのポインタを明示的に保持する必要があります(具体的な理由から参照できません)。しかし、あなたがptr_vectorでオブジェクトにアクセスするとき、あなたが参照を取得、T &(あなたがptr_vector.push_back(T *を使用していても)

は、私はブーストのうち、無地のポインタを取得することができますとにかくあり:: ptr_vector ?

+2

なぜポインタでなければならないのか説明できますか?多分代替があります。 –

+0

あなたは* hold *の意味を説明することもできますか:所有権を意味するのでしょうか?または単に尖った価値にアクセスすることですか? –

答えて

9

はい、

boost::ptr_vector<int> v; 
v.push_back(new int()); 
int* ptr = &v[0]; 
3

同じ方法あなたは、通常のベクトルから実行します。&myvec[index]もちろん、あなたは、オブジェクトが存在しなくなった後、ポインタが、この場合には使用されていないことを確実に自分自身にしています。あなたがptr_vector<T>ではなくvector<shared_ptr<T> >に切り替えることを検討することができます。

関連する問題