C++ Tutorial/template/generic array

Материал из C\C++ эксперт
Перейти к: навигация, поиск

A generic safe array example

<source lang="cpp">#include <iostream>

  1. include <cstdlib>

using namespace std; const int SIZE = 10; template <class T> class MyType {

 T a[SIZE];

public:

 MyType() {
   register int i;
   for(i=0; i<SIZE; i++) a[i] = i;
 }
 T &operator[](int i){
     if(i<0 || i> SIZE-1) {
       cout << "\nIndex value of ";
       cout << i << " is out-of-bounds.\n";
       exit(1);
     }
     return a[i];
 }

}; int main() {

 MyType<int> intob;
 MyType<double> doubleob;
 cout << "Integer array: ";
 for(int i=0; i<SIZE; i++)
    intob[i] = i;
 for(int i=0; i<SIZE; i++)
    cout << intob[i] << "  ";
 cout << "\n";
 cout << "Double array: ";
 for(int i=0; i<SIZE; i++)
    doubleob[i] = (double) i/3;
 for(int i=0; i<SIZE; i++)
    cout << doubleob[i] << "  ";
 cout << "\n";
 intob[12] = 100;
 return 0;

}</source>

Integer array: 0  1  2  3  4  5  6  7  8  9
Double array: 0  0.333333  0.666667  1  1.33333  1.66667  2  2.33333  2.66667  3
Index value of 12 is out-of-bounds.

Define your own generic array

<source lang="cpp">#include<iostream.h>

  1. include<iomanip.h>

template<class T> class Array {

 T *elems;
 int size;
 public:
   Array(int s)
   {
     size=s;
     elems=new T[size];
     for(int i=0;i<size;i++)
        elems[i]=0;
   }
   ~Array()
   {
     delete elems;
   }
   T& operator[](int index)
   {
     return elems[index];
   }
   void operator=(T temp)
   {
      for(int i=0;i<size;i++)
              elems[i]=temp;
   }

}; int main() {

 int n=10;
 Array<int>arr1(n);
 Array<char>arr2(n);
 for(int i=0;i<n;i++)
 {
   arr1[i]="a"+i;
      arr2[i]="a"+i;
 }
 cout <<endl;
 for(int i=0;i<n;i++){
        cout<<setw(8)<<arr1[i]<<setw(8)<<arr2[i]<<endl;
 }

}</source>

97       a
      98       b
      99       c
     100       d
     101       e
     102       f
     103       g
     104       h
     105       i
     106       j