2

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

我的代码的另一部分需要在 ptr_vector 中显式保存指向我的一个对象的指针(出于特定原因,它不能作为引用)。但是,当您访问 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]. 当然,您需要自己确保在对象不再存在后不使用指针。如果这变得困难,那么您可以考虑切换到 avector<shared_ptr<T> >而不是 a ptr_vector<T>

于 2012-01-17T09:33:02.703 回答