Implementation of a safe array type vect : Your list « Data Types « C++ Tutorial






#include  <iostream>
#include  <assert.h>
using namespace std;
class vect {
public:
   explicit vect(int n = 10);
   ~vect() { delete []p; }
   int&  element(int i);                 
   int  ub() const {return (size - 1);}  
private:
   int*  p;
   int   size;
};

vect::vect(int n) : size(n)
{
   assert(n > 0);
   p = new int[size];
   assert(p != 0);
}

int& vect::element(int i)
{
   assert (i >= 0 && i < size);
   return p[i];
}

//A two-dimensional safe array type matrix
class matrix {
public:
   matrix(int d1, int d2);
   ~matrix();
   int  ub1() const { return(s1 - 1); }
   int  ub2() const { return(s2 - 1); }
   int&  element(int i, int j);
private:
   int**  p;
   int    s1, s2;
};
 matrix::matrix(int d1, int d2) : s1(d1), s2(d2)
{
   assert(d1 > 0 && d2 > 0);
   p = new int*[s1];
   assert(p != 0);
   for (int i = 0; i < s1; ++i){
      p[i] = new int[s2];
      assert(p[i] != 0);
   }
}
matrix::~matrix()
{
   for (int i = 0; i <= ub1(); ++i)
      delete p[i];
   delete []p;
}

int& matrix::element(int i, int j)
{
   assert(i >= 0 || i <= ub1() || j >= 0 || j <= ub2());
   return p[i][j];
}

int main()
{
   matrix a(4, 4), b(4, 6), c(4, 6);
   int i, j;

   for (i = 0; i <= a.ub1(); ++i) {
      cout << "\n";
      for (j = 0; j <= a.ub2(); ++j) {
         a.element(i, j) = i + j;
         cout << a.element(i, j) << "\t";
      }
   }

   for (i = 0; i <= b.ub1(); ++i) {
      cout << "\n";
      for (j = 0; j <= b.ub2(); ++j) {
         b.element(i, j) = i + j;
         cout << b.element(i, j) << "\t";
      }
   }
}








2.38.Your list
2.38.1.List of integers
2.38.2.linked list
2.38.3.Manage list of employees based on STL
2.38.4.Implementation of a safe array type vect
2.38.5.Vector with raised exceptions