boost::pool
kullanarak ayrılmış nesnelerle std::vector
nesnesine sahip olmak istiyorum. Bunun gibi bir şey doğru mu?Yükseltme :: havuzunu kullanarak bir std :: vektöründe bellek ayırmalarını yönetme
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;
}
Bu kod çalışır, ancak tamamen neden emin değilim. Tamamlayıcılar kavramına oldukça yeniyim, ancak doğru anlıyorsam bu, std::vector
varsayılan ayırıcı yerine bir havuz kullanması gerektiğini söylüyor, böylece vektörde oluşturulan tüm öğeler bir havuzdan oluşturulacak. Ben tam olarak emin değilim ne
şöyledir:
Nerede havuzudur?
Doğrudan havuza nasıl erişirim (örneğin boş hafızaya)?
fast_pool_allocator
bir havuz içeriyor mu, yoksa havuzu ayrı ayrı oluşturmam gerekiyor ve bir şekilde bu aracın kullanılmasını anlatıyor.
Örn. [bu 'std :: vector' referansı] (http://en.cppreference.com/w/cpp/container/vector). Eminim ayırıcıyı almak için uygun bir işlev bulabilirsin. Ayrıca, ['std :: vector' constructors] 'a da göz atmak isteyebilirsiniz (http://en.cppreference.com/w/cpp/container/vector/vector). –
[Destek kaynağı] (http://www.boost.org/doc/libs/1_55_0/libs/pool/doc/html/boost/fast_pool_allocator.html) 'std :: pool_allocator' sözcüğünü kullanarak şunları söylüyor: : vector'. –