C++ Tutorial/template/generic array
A generic safe array example
<source lang="cpp">#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;
}</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>
- 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