2012-01-17 4 views
2

최근 힙 할당 객체 컬렉션을 관리하는 데 유용한 부스트 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]; 
3

같은 방법으로 정기적 벡터에서 수행합니다. &myvec[index] 물론 당신이 객체가 더 이상 없습니다 후 포인터가이 경우 사용되지 않도록 보장 자신에있어. 가 어려워지면 ptr_vector<T>이 아닌 vector<shared_ptr<T> >으로 전환하는 것이 좋습니다.