2012-01-17 36 views
2

我最近發現boost ptr_vector對於管理我的堆分配對象集合非常有用。指針集合庫非常好,但不幸的是,我被阻止了一件事。從boost :: ptr_vector獲取指針而不是引用

我的代碼的另一部分需要顯式地持有指向我的對象在ptr_vector(由於特定原因,它不能作爲參考)之一我的對象。但是,當你在一個ptr_vector訪問對象時,你會得到一個參考,T &即使你使用ptr_vector.push_back((T *)

有反正我可以得到一個簡單的指針出了升壓:: ptr_vector ?

+2

你能解釋爲什麼它必須是一個指針嗎?也許有另一種選擇。 – 2012-01-17 09:35:21

+0

你還可以解釋* hold *是什麼意思:它是否意味着所有權?或僅僅訪問指向的值? – 2012-01-17 10:56:11

回答

9

是,

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

相同的方式,從一個普通向量做:&myvec[index]當然,你對你自己的保證指針不使用後的對象不再有如果。變得困難,那麼你可以考慮切換到vector<shared_ptr<T> >而不是ptr_vector<T>

相關問題