sprint 1-alpha
sprint/container/autovector.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 *   sprint::autovector
00003 *
00004 *   Copyright (C) 2004-2011  Paolo Medici <www.pmx.it>
00005 *
00006 *  This library is free software; you can redistribute it and/or
00007 *  modify it under the terms of the GNU Lesser General Public
00008 *  License as published by the Free Software Foundation; either
00009 *  version 2.1 of the License, or (at your option) any later version.
00010 *
00011 *  This library is distributed in the hope that it will be useful,
00012 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 *  Lesser General Public License for more details.
00015 *
00016 *  You should have received a copy of the GNU Lesser General Public
00017 *  License along with this library; if not, write to the Free Software
00018 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00019 *
00020 *******************************************************************************/
00021  
00022  #ifndef _SPRINT_AUTO_VECTOR_H
00023  #define _SPRINT_AUTO_VECTOR_H
00024  
00028  namespace sprint {
00029  
00030 
00035  template<class T>
00036  class autovector {
00037        T * m_ptr;
00038        public:
00039             
00041             autovector() : m_ptr(NULL) { }
00043             autovector(int size) : m_ptr( new T[size] ) { }
00045             ~autovector() { delete [] m_ptr; }
00046             
00048             autovector( autovector & src) { m_ptr = src.m_ptr; src.m_ptr = NULL; }
00049 
00051             void operator = ( autovector & src) { delete [] m_ptr; m_ptr = src.m_ptr; src.m_ptr = NULL; }
00052             
00054             void resize(int size) { 
00055                  delete [] m_ptr; 
00056                  m_ptr = new T [size];
00057                  }
00059             inline T & operator [] (int i) { return m_ptr[i]; }
00060             inline const T & operator [] (int i) const { return m_ptr[i]; }
00061 
00063             T* begin() { return m_ptr; }
00065             const T* begin() const { return m_ptr; }
00066               
00067        };
00068 
00069 } // namespace sprint
00070 
00071 
00072 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines