Visible to Intel only — GUID: GUID-1D77729C-192E-4DE5-9F53-6185D48D683A
Visible to Intel only — GUID: GUID-1D77729C-192E-4DE5-9F53-6185D48D683A
memory_pool_allocator
A class template that provides a memory pool with a C++ allocator interface.
Description
memory_pool_allocator meets the allocator requirements from the [allocator.requirements] ISO C++ Standard section It also provides a constructor to allocate and deallocate memory. This constructor is linked with an instance of either the memory_pool or the fixed_pool class. The class is mainly intended for enabling memory pools within STL containers.
API
Header
#include "oneapi/tbb/memory_pool.h"
Synopsis
namespace oneapi { namespace tbb { template<typename T> class memory_pool_allocator { public: using value_type = T; using pointer = value_type*; using const_pointer = const value_type*; using reference = value_type&; using const_reference = const value_type&; using size_type = size_t; using difference_type = ptrdiff_t; template<typename U> struct rebind { using other = memory_pool_allocator<U>; }; explicit memory_pool_allocator(memory_pool &pool) throw(); explicit memory_pool_allocator(fixed_pool &pool) throw(); memory_pool_allocator(const memory_pool_allocator& src) throw(); template<typename U> memory_pool_allocator(const memory_pool_allocator<U,P>& src) throw(); pointer address(reference x) const; const_pointer address(const_reference x) const; pointer allocate(size_type n, const void* hint=0); void deallocate(pointer p, size_type); size_type max_size() const throw(); void construct(pointer p, const T& value); void destroy(pointer p); }; template<> class memory_pool_allocator<void> { public: using pointer = void*; using const_pointer = const void*; using value_type = void; template<typename U> struct rebind { using other = memory_pool_allocator<U>; }; memory_pool_allocator(memory_pool &pool) throw(); memory_pool_allocator(fixed_pool &pool) throw(); memory_pool_allocator(const memory_pool_allocator& src) throw(); template<typename U> memory_pool_allocator(const memory_pool_allocator<U>& src) throw(); }; } // namespace tbb } // namespace oneapi template<typename T, typename U> inline bool operator==( const memory_pool_allocator<T>& a, const memory_pool_allocator<U>& b); template<typename T, typename U> inline bool operator!=( const memory_pool_allocator<T>& a, const memory_pool_allocator<U>& b);
Member Functions
explicitmemory_pool_allocator(memory_pool&pool)
Effects: Constructs a memory pool allocator serviced by memory_pool instance pool.
explicitmemory_pool_allocator(fixed_pool&pool)
Effects: Constructs a memory pool allocator serviced by fixed_pool instance pool.
Examples
The code below provides a simple example of container construction with the use of a memory pool.
#define TBB_PREVIEW_MEMORY_POOL 1 #include "oneapi/tbb/memory_pool.h" ... typedef oneapi::tbb::memory_pool_allocator<int> pool_allocator_t; std::list<int, pool_allocator_t> my_list(pool_allocator_t( my_pool ));