2014-07-22 35 views
5

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.

+1

Ö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). –

+1

[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'. –

cevap

3

boost::fast_pool_allocator durumunda havuz, ayırma uygulaması tarafından sahip olunan bir tekildir. Yani ayrı bir şey oluşturmanıza gerek yok.

Sen std::vector ait get_allocator fonksiyonu aracılığıyla allocator erişebilir veya boost::fast_pool_allocator statik işlevleri kullanabilirsiniz.

3

boost reference'a baktığımızda, herkes tarafından kullanılan tekil bir ayırıcı örneği vardır. Sadece bir yerel boost::fast_pool_allocator veya boost::pool_allocator nesnesini oluşturarak, bellek ayırmak için de kullanabilirsiniz.

İlgili konular