boost::pool
을 사용하여 할당 된 객체로 std::vector
의 객체를 갖고 싶습니다. 이게 옳은 것입니까?boost :: pool을 사용하여 std :: vector에서 메모리 할당을 관리하십시오.
class MyClass
{
private:
double data;
public:
MyClass(double d) : data(d) { }
};
int main()
{
std::vector<MyClass, boost::fast_pool_allocator<MyClass> > vect;
vect.push_back(4.5);
vect.push_back(9.8); //Are these being stored in a pool now?
return 0;
}
이 코드는 작동하지만 완전히 확신 할 수 없습니다. 나는 allocators의 개념에 대해 처음으로 알고있다. 그러나 정확하게 이해한다면 std::vector
은 디폴트 할당 자 대신에 풀을 사용한다고 말하고있다. 따라서 벡터에서 생성 된 모든 요소는 풀에서 만들어 질 것이다.
정확하지 않은 내용은 다음과 같습니다.
풀이 어디에 있습니까?
그리고 어떻게 풀에 직접 액세스합니까 (예 : 메모리를 확보하기 위해)?
fast_pool_allocator
에 풀이 포함되어 있습니까? 아니면 풀을 별도로 만들어야하며 어떻게 든 할당 자에게 사용하도록 알리십시오.
예 : [this'std :: vector' reference] (http://en.cppreference.com/w/cpp/container/vector). 할당자를 얻는 데 적합한 함수를 찾을 수있을 것입니다. [std :: vector 생성자] (http://en.cppreference.com/w/cpp/container/vector/vector)도 확인해 볼 수 있습니다. –
[boost reference] (http://www.boost.org/doc/libs/1_55_0/libs/pool/doc/html/boost/fast_pool_allocator.html)는'boost :: pool_allocator'와'std : : 벡터'. –