typedef typename allocator::reference reference;
typedef typename allocator::const_reference
const_reference;
typedef typename allocator::size_type size_type;
typedef typename allocator::difference_type
difference_type;
typedef typename allocator::pointer iterator;
typedef typename allocator::const_pointer const_iterator;
typedef allocator allocator_type;
allocator_type get_allocator() const {
return static_cast<const allocator&>(*this);
}
iterator begin() { return first; }
iterator end() { return last; }
const_iterator begin() const { return first; }
const_iterator end() const { return last; }