+ clear();
+ m_alloc.deallocate(m_data, m_capacity);
+ }
+
+ // Iterators
+ iterator begin() {
+ return iterator(m_data, 0, m_size);
+ }
+ const_iterator begin() const {
+ return const_iterator(m_data, 0, m_size);
+ }
+ iterator end() {
+ return iterator(m_data, m_size, m_size);
+ }
+ const_iterator end() const {
+ return const_iterator(m_data, m_size, m_size);
+ }
+
+ // Capacity
+ size_type size() const {
+ return m_size;
+ }
+ size_type max_size() const {
+ return -1 / sizeof(value_type);
+ }
+ void resize(size_type new_cap, value_type val = value_type()) {
+ reserve(new_cap);
+ if( new_cap > m_size )
+ {
+ for( size_type i = m_size; i < new_cap; i ++ ) {
+ m_alloc.construct( &m_data[i], val );
+ }
+ }
+ else
+ {
+ for( size_type i = new_cap; i < m_size; i ++ )
+ m_alloc.destroy( &m_data[i] );