|
Boost : |
From: Thorsten Ottosen (nesotto_at_[hidden])
Date: 2004-12-07 20:38:53
Dear all,
I have sometimes spoken with people here that had an interest in allocators
that could be reset within containers. For example, some have wanted a
allocator& container::get_allocator();
member function.
One way to solve that problem could be a class like this:
template< class Allocator >
class external_allocator
{
public:
// forward to Allocator* member
};
And then it can be used like this
typedef external_allocator< std::allocator<T> > ex_allocator;
std::allocator<T> alloc;
ex_allocator ex_alloc(alloc);
std::vector<T,ex_allocator> vec(ex_alloc);
and can now control the allocator from the outside. There seems to only be a
small
overhead with this approach.
One usage scenario I
can see would be to use a stack-based allocator on performance critical paths.
(because we need the copy-semantics of the container's allocator to be
shallow)
If there is interest, I can also add the specified member function to the
smart containers.
or an appropriate member to external_allocator<>.
Feedback is welcome
-Thorsten
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk