2 #ifndef OPENGM_BUFFER_VECTOR_HXX
3 #define OPENGM_BUFFER_VECTOR_HXX
23 typedef T
const * ConstIteratorType;
24 typedef T
const * const_iterator;
25 typedef T * IteratorType;
28 BufferVector(
const size_t );
29 BufferVector(
const size_t ,
const T & );
30 BufferVector(
const BufferVector<T> &);
32 BufferVector<T> & operator= (
const BufferVector<T> &);
34 T
const * begin()
const;
35 T
const * end()
const;
39 T
const * data()
const;
42 T
const & operator[](
const size_t)
const;
43 T & operator[](
const size_t);
44 void push_back(
const T &);
45 void resize(
const size_t );
46 void reserve(
const size_t );
49 const T & front()
const;
50 const T & back()
const;
53 template<
class ITERATOR>
54 void assign(ITERATOR ,ITERATOR);
62 inline BufferVector<T>::BufferVector( )
71 inline BufferVector<T>::BufferVector
86 inline BufferVector<T>::BufferVector
94 std::fill(data_,data_+size_,value);
101 inline BufferVector<T>::BufferVector
103 const BufferVector<T> & other
105 : size_(other.size_),
106 capacity_(other.size_)
109 data_ =
new T[size_];
110 std::copy(other.data_,other.data_+size_,data_);
117 BufferVector<T>::data()
const{
124 BufferVector<T>::data() {
130 inline BufferVector<T>::~BufferVector( ) {
139 inline BufferVector<T> & BufferVector<T>::operator=
141 const BufferVector<T> & other
146 if(size_>capacity_) {
148 data_ =
new T[size_];
151 std::copy(other.data_,other.data_+size_,data_);
159 BufferVector<T>::size()
const {
167 BufferVector<T>::begin()
const{
175 BufferVector<T>::end()
const{
177 return data_ + size_;
183 BufferVector<T>::begin() {
191 BufferVector<T>::end() {
193 return data_ + size_;
200 BufferVector<T>::operator[]
213 BufferVector<T>::operator[]
225 BufferVector<T>::push_back
230 if(capacity_==size_) {
232 T * tmp=
new T[capacity_*2];
233 std::copy(data_,data_+size_,tmp);
253 BufferVector<T>::resize
261 std::copy(data_,data_+size_,tmp);
279 BufferVector<T>::reserve
287 std::copy(data_,data_+size_,tmp);
306 BufferVector<T>::clear() {
314 BufferVector<T>::empty()
const{
315 return size_==0 ?
true:
false;
322 template<
class ITERATOR>
324 BufferVector<T>::assign(ITERATOR begin,ITERATOR end) {
325 this->resize(std::distance(begin,end));
326 std::copy(begin, end, data_);
332 BufferVector<T>::back()
const{
333 return data_[size_-1];
339 BufferVector<T>::back() {
340 return data_[size_-1];
346 BufferVector<T>::front()
const{
353 BufferVector<T>::front() {
360 #endif //OPENGM_BUFFER_VECTOR_HXX
#define OPENGM_ASSERT(expression)