From: Leandro Lucarella Date: Fri, 15 Dec 2006 19:39:03 +0000 (+0000) Subject: Indice mágico ahora usa std::vector porque estaba muy buggy y explotaba. X-Git-Tag: entrega-20061218~35 X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/commitdiff_plain/38146f219b98da8c9de845337b83a0bf8716c83d?ds=inline Indice mágico ahora usa std::vector porque estaba muy buggy y explotaba. --- diff --git a/trunk/src/indicemagico.h b/trunk/src/indicemagico.h index 49f18f1..e52b220 100644 --- a/trunk/src/indicemagico.h +++ b/trunk/src/indicemagico.h @@ -8,7 +8,7 @@ #include -#include +#include #include @@ -16,58 +16,37 @@ template class CIndiceMagico { public: - std::string* m_nombres ; - T* m_datos ; - unsigned m_cant ; - typedef T* iterator; + std::vector< std::string > m_nombres ; + std::vector< T > m_datos ; + typedef typename std::vector< T >::iterator iterator; public: - CIndiceMagico() - { - m_cant = 0 ; - m_nombres = new std::string[MAX_ELEMENTOS]; - m_datos = new T[MAX_ELEMENTOS]; + iterator begin() { return m_datos.begin(); } - if (!m_nombres) - std::cerr << "No se pudo allocar el arreglo CIndiceMagico::m_nombres.\n"; + iterator end() { return m_datos.end(); } - if (!m_datos) - std::cerr << "No se pudo allocar el arreglo CIndiceMagico::m_datos.\n"; - - } - - ~CIndiceMagico() - { - delete m_nombres; - delete m_datos; - } - -public: - iterator begin() { return m_datos; } - iterator end() { return m_datos + m_cant; } - void add(const char* nombre, const T dato) + void add(const std::string& nombre, const T& dato) { //Si ya existía, lo borro if (exist(nombre)) remove(nombre) ; - - m_nombres[m_cant] = nombre ; - m_datos[m_cant++] = dato ; + m_nombres.push_back(nombre); + m_datos.push_back(dato); } void add(CIndiceMagico& indice) { - for (unsigned i=0; i. //POS: Retorna el elemento. - T& find(const char* nombre) + T& find(const std::string& nombre) { unsigned i; - for (i=0; i