home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_10_11 / 1011069a < prev    next >
Text File  |  1992-09-14  |  1KB  |  71 lines

  1. // fa1.cpp - a dynamic array of float
  2.  
  3. #include "fa1.h"
  4. #include <assert.h>
  5.  
  6. float_array::float_array(size_t n)
  7.     {
  8.     if ((len = n) == 0)
  9.         array = 0;
  10.     else
  11.         {
  12.         array = new float[n];
  13.         assert(array != 0);
  14.         for (int i = 0; i < n; ++i)
  15.             array[i] = 0;
  16.         }
  17.     }
  18.  
  19. float_array::float_array(const float_array &fa)
  20.     {
  21.     if ((len = fa.len) == 0)
  22.         array = 0;
  23.     else
  24.         {
  25.         array = new float[len];
  26.         assert(array != 0);
  27.         for (int i = 0; i < len; ++i)
  28.             array[i] = fa.array[i];
  29.         }
  30.     }
  31.  
  32. float_array::~float_array()
  33.     {
  34.     delete [] array;
  35.     }
  36.  
  37. float_array &float_array::operator=(const float_array &fa)
  38.     {
  39.     if (this != &fa)
  40.         return *this;
  41.     if (len != fa.len)
  42.         {
  43.         delete [] array;
  44.         if ((len = fa.len) == 0)
  45.             array = 0;
  46.         else
  47.             {
  48.             array = new float[len];
  49.             assert(array != 0);
  50.             }
  51.         }
  52.     for (size_t i = 0; i < len; ++i)
  53.         array[i] = fa.array[i];
  54.     return *this;
  55.     }
  56.  
  57. float &float_array::operator[](size_t i)
  58.     {
  59.     assert(i < len);
  60.     return array[i];
  61.     }
  62.  
  63. ostream &operator<<(ostream &os, float_array &fa)
  64.     {
  65.     os << '{';
  66.     size_t i;
  67.     for (i = 0; i < fa.length(); ++i)
  68.         os << ' ' << fa[i];
  69.     return os << " }";
  70.     }
  71.