2013-10-05 2 views
0

X 개체 유형의 벡터를 사용하여 개체 bool을 만들고 싶습니다. 벡터를 만들 때 :개체 풀 만들기

vector<X>* v = new vector<X>; 
v.reserve(10000); 

나는 가능한 한 최소한의 작업을하고 싶습니다. 그냥 기본 생성자가 호출됩니다 (내 기본 생성자는 X에 대해 비어 있음)?

나중에 내 프로그램에서 개체 풀을 사용하여 내 개체를 "작성"합니까? 그것은 무언가 같이 될 것이다 :

get_next_object_in_pool() 그냥 벡터의 다음 무료 인덱스로 인덱스를 유지
int y = get_next_object_in_pool(); 
X x = v[y]; 

?

+0

주' –

+0

이 코드를 한 번 년 전 저를 저장 : [개체 일반 C에 대한 풀링 ++ 클래스 (HTTP : // www.codeproject.com/Articles/3968/Object-Pooling-for-Generic-C-classes) 일반적인'new'와'delete' 연산자를 사용하여 풀에서 객체를 얻는 것처럼 기존 코드에 대한 침입을 최소화합니다. 그들을 다시 돌려 보내라. –

+0

@MassoodKhaari는 내 누락 된 포인터 참조를 지적 해 주셔서 감사합니다. – user997112

답변

0

예비가 개체를 만들지 않기 때문에 X 용 생성자가 호출되지 않습니다. 예비와 크기를 혼동하지 마십시오. 다른 것들을합니다. 난 당신이 예약을 원하십니까 당신의 묘사의 나머지 부분에서 생각하지만, 당신이 원하는 가정

v.push_back(X()); 

것처럼 뭔가 풀에 오브젝트를 추가 할 때 크기가 0

에 당신의 벡터를 잎 기억 기본 생성 객체를 추가합니다.

풀의 모든 구성 및 비 구축 슬롯을 혼합하여 풀을 완벽하게 제어하려는 경우 그러면 다른 일을해야 할 것입니다. 너는 vector<T>으로 그걸 얻지 못할 것이다. `또는`벡터 V(); 당신은`벡터 *의 V = 새로운 벡터 를 작성해야

+0

멋지다. 그래서 난 내 기본 개체가 아닌 생성자를 사용하여 내 X 개체를 만든 다음 push_back을 벡터에 대해 언제든지 만들 수 있습니다. 그리고 이것은 내 X 객체를 연속적인 메모리에 보관할 것입니까? – user997112

+0

@ user997112 예, 벡터는 연속 메모리를 사용하도록 보장됩니다. – john