Página principal   Lista alfabética   Lista de componentes   Lista de archivos   Miembros de las clases   Archivos de los miembros   Páginas relacionadas  

vector_dinamico.cpp

Ir a la documentación de este archivo.
00001 
00006 #include <cassert>
00007 #include <vector_dinamico.h>
00008 
00009 /* _________________________________________________________________________ */
00010 
00011 Vector_Dinamico::Vector_Dinamico(int n) 
00012 {
00013   assert(n>=0);
00014   if (n>0)
00015     datos= new float[n];
00016   else datos= 0;
00017   nelementos= n;
00018 }
00019 /* _________________________________________________________________________ */
00020 
00021 Vector_Dinamico::Vector_Dinamico(const Vector_Dinamico& original) 
00022 {
00023   nelementos= original.nelementos;
00024   if (nelementos>0) {
00025     datos= new float[nelementos];
00026     for (int i=0; i<nelementos;++i)
00027       datos[i]= original.datos[i];
00028   }
00029   else datos=0;
00030 }
00031 /* _________________________________________________________________________ */
00032 
00033 Vector_Dinamico::~Vector_Dinamico() 
00034 {
00035   if (nelementos>0) delete[] datos;
00036 }
00037 /* _________________________________________________________________________ */
00038 
00039 int Vector_Dinamico::size() const 
00040 { 
00041   return nelementos; 
00042 }
00043 /* _________________________________________________________________________ */
00044 
00045 float& Vector_Dinamico::operator[] (int i) {
00046   
00047   assert (0<=i && i<nelementos);
00048   return datos[i];
00049 }
00050 /* _________________________________________________________________________ */
00051 
00052 const float& Vector_Dinamico::operator[] (int i) const 
00053 {
00054   assert (0<=i && i<nelementos);
00055   return datos[i];
00056 }
00057 /* _________________________________________________________________________ */
00058 
00059 void Vector_Dinamico::resize(int n) 
00060 {
00061   assert (n>=0);
00062   if (n!=nelementos) {
00063     if (n!=0) {
00064       float * nuevos_datos;
00065       nuevos_datos= new float[n];
00066       if (nelementos>0) {
00067         int minimo;
00068         minimo= nelementos<n?nelementos:n;
00069         for (int i= 0; i<minimo;++i)
00070           nuevos_datos[i]= datos[i];
00071         delete[] datos;
00072       }
00073       nelementos= n;
00074       datos= nuevos_datos;
00075     }
00076     else {
00077       if (nelementos>0)
00078         delete[] datos;
00079       datos= 0;
00080       nelementos= 0;
00081     }
00082   }
00083 }
00084 /* _________________________________________________________________________ */
00085 
00086 Vector_Dinamico& Vector_Dinamico::operator= (const Vector_Dinamico& original) 
00087 {
00088   if (this!= &original) {
00089     if (nelementos>0) delete[] datos;
00090     nelementos= original.nelementos;
00091     datos= new float[nelementos];
00092     for (int i=0; i<nelementos;++i)
00093       datos[i]= original.datos[i];
00094   }
00095   return *this;
00096 }

Programación en C++. Desarrollado por Antonio Garrido, © 2003