A generic safe array example
#include <iostream>
#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;
}
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
#include<iostream.h>
#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;
}
}
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j