Boost logo

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