从boost :: ptr_vector获取指针而不是引用

时间:2012-01-17 09:28:45

标签: c++ pointers boost ptr-vector

我最近发现boost ptr_vector对管理堆分配对象的集合非常有用。指针集合库非常好,但不幸的是,我被一件事所困扰。

我的代码的另一部分需要显式保存指向ptr_vector中我的一个对象的指针(由于特定原因它不能作为引用)。但是,当您访问ptr_vector中的对象时,您会获得一个引用,T& (即使你使用了ptr_vector.push_back(T *)

无论如何我可以从boost :: ptr_vector中获得一个普通指针吗?

2 个答案:

答案 0 :(得分:9)

是,

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

答案 1 :(得分:3)

与常规向量相同:&myvec[index]。当然,您可以自己确保在对象不再存在后不使用指针。如果这变得困难,那么您可以考虑切换到vector<shared_ptr<T> >而不是ptr_vector<T>