venerdì, dicembre 15, 2006

giovedì, dicembre 14, 2006

standard template library

giovedì, dicembre 07, 2006

templates

venerdì, dicembre 01, 2006

un vettore dinamico "sicuro" bis

Ecco una possibile implementazione di un vettore dinamico "sicuro", cioe' che maschera il delete incorporandolo nel proprio distruttore.
L'accesso agli elementi del vettore avviene tramite l'operatore overladed operator[]

#ifndef vettore_h
#define vettore_h

/** \class vettore
\brief un vettore dinamico sicuro
*/


template <class T>
class vettore
{
public :
//! costruttore
vettore (const int & elementsNum) :
m_elementsNum (elementsNum) ,
m_elements (new T [m_elementsNum])
{}
//! distruttore
~vettore ()
{
delete [] m_elements ;
}

//! ritorna un elemento
T &
operator[] (const int & i)
{
if (i<m_elementsNum) return m_elements[i] ;
else return m_elements[m_elementsNum-1] ;
}

private :

int m_elementsNum ;
T * m_elements ;

} ;


#endif

un vettore dinamico "sicuro"

Ecco una possibile implementazione di un vettore dinamico "sicuro", cioe' che maschera il delete incorporandolo nel proprio distruttore.

#ifndef vettoreSimple_h
#define vettoreSimple_h

/** \class vettoreSimple
\brief un vettoreSimple dinamico sicuro
*/


template <class T>
class vettoreSimple
{
public :
//! costruttore
vettoreSimple (const int & elementsNum) :
m_elementsNum (elementsNum) ,
m_elements (new T [m_elementsNum])
{}
//! distruttore
~vettoreSimple ()
{
delete [] m_elements ;
}

//! ritorna un elemento (modificabile)
T &
elemento (const int & i)
{
if (i<m_elementsNum) return m_elements[i] ;
else return m_elements[m_elementsNum-1] ;
}

private :

int m_elementsNum ;
T * m_elements ;
} ;


#endif