|
VMS Help CXXLSTD, allocator *Conan The Librarian |
Standard C++ Library
Copyright 1996, Rogue Wave Software, Inc.
NAME
allocator - The default allocator object for storage management in
Standard Library containers.
SYNOPSIS
#include <memory>
template <class T>
class allocator;
DESCRIPTION
Containers in the Standard Library allow you control of storage
management through the use of allocator objects. Each
container has an allocator template parameter specifying
the type of allocator to be used. Every constructor, except the
copy constructor, provides an allocator parameter, allowing you to
pass in a specific allocator. A container uses that
allocator for all storage management.
The library provides a default allocator, called allocator. This
allocator uses the global new and delete operators. By
default, all containers use this allocator. You can also
design your own allocator, but if you do so it must provide an
appropriate interface. The standard interface is specified below.
STANDARD INTERFACE
template <class T>
class allocator {
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef T* pointer;
typedef const T* const_pointer;
typedef T& reference;
typedef const T& const_reference;
typedef T value_type;
template <class U> struct rebind;
allocator () throw();
template <class U> allocator(const allocator<U>&) throw();
template <class U>
allocator& operator=(const allocator<U>&) throw();
~allocator () throw();
pointer address (reference) const;
const_pointer address (const_reference) const;
pointer allocate (size_type,
typename allocator<void> const_pointer = 0);
void deallocate(pointer);
size_type max_size () const;
void construct (pointer, const T&);
void destroy (pointer);
};
// specialize for void:
template <> class allocator<void> {
public:
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef void* pointer;
typedef const void* const_pointer;
// reference-to-void members are impossible.
typedef void value_type;
template <class U>
struct rebind { typedef allocator<U> other; };
allocator() throw();
template <class U>
allocator(const allocator<U>&) throw();
template <class U>
allocator operator=(const allocator<U>&) throw();
~allocator() throw();
pointer allocate(size_type, const void* hint);
void deallocate(pointer p);
size_type max_size() const throw();
};
// globals
template <class T>
void* operator new(size_t N, allocator<T>& a);
template <class T, class U>
bool operator==(const allocator<T>&,
const allocator<U>&) throw();
template <class T, class U>
bool operator!=(const allocator<T>&,
const allocator<U>&) throw();
TYPES
size_type
Type used to hold the size of an allocated block of storage.
difference_type
Type used to hold values representing distances between storage
addresses.
pointer
Type of pointer returned by allocator.
const_pointer
Const version of pointer.
reference
Type of reference to allocated objects.
const_reference
Const version of reference.
value_type
Type of allocated object.
template <class U> struct rebind;
Provides a way to convert an allocator templated on one type to
an allocator templated on another type. This struct contains a
single type member: typedef allocator<U> other.
OPERATIONS
allocator()
Default constructor.
template <class U>
allocator(const allocator<U>&)
Copy constructor.
template <class U>
allocator& operator=(const allocator<U>&) throw()>&)
Assignment operator.
~allocator()
Destructor.
pointer address(reference x) const;
Returns the address of the reference x as a pointer.
const_pointer address(const_reference x) const;
Returns the address of the reference x as a const_pointer.
pointer allocate(size_type n,
typename allocator<void>::const_pointer p = 0)
Allocates storage. Returns a pointer to the first element in a
block of storage n*sizeof(T) bytes in size. The block will
be aligned appropriately for objects of type T. Throws the
exception bad_alloc if the storage is unavailable. This function
uses operator new(size_t). The second parameter p can be used
by an allocator to localize memory allocation, but the
default allocator does not use it.
void deallocate(pointer p)
Deallocates the storage indicated by p. The storage must have
been obtained by a call to allocate.
size_type max_size () const;
Returns the largest size for which a call to allocate might
succeed.
void construct (pointer p, const T& val);
Constructs an object of type T2 with the initial value of val at
the location specified by p. This function calls the
placement new operator.
void destroy (pointer p)
Calls the destructor on the object pointed to by p, but does not
delete.
See the container section of the Class Reference for a further
description of how to use the alternate allocator within a
user-defined container.
SEE ALSO
container
STANDARDS CONFORMANCE
ANSI X3J16/ISO WG21 Joint C++ Committee
|
|