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 }