2

私は最近、ブースト ptr_vector がヒープ割り当てオブジェクトのコレクションを管理するのに役立つことを発見しました。ポインター コレクション ライブラリは非常に優れていますが、残念なことに、1 つのことが足を引っ張っています。

コードの別の部分では、ptr_vector 内のオブジェクトの 1 つへのポインターを明示的に保持する必要があります (特定の理由により、参照にすることはできません)。ただし、ptr_vector 内のオブジェクトにアクセスすると、参照 T&​​ が取得されます (ptr_vector.push_back(T *) を使用した場合でも)。

boost::ptr_vector から単純なポインタを取得できる方法はありますか?

4

2 に答える 2

9

はい、

boost::ptr_vector<int> v;
v.push_back(new int());
int* ptr = &v[0];
于 2012-01-17T09:32:44.523 に答える
3

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

于 2012-01-17T09:33:02.703 に答える