Advertisement
Need4Sleep

myArray.h (DailyC++) 7/23/12

Jul 23rd, 2012
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. /// http://www.cplusplus.com/forum/beginner/75558/
  2. #ifndef MYARRAY_H
  3. #define MYARRAY_H
  4. #include <iostream>
  5. #include <cstdlib>
  6. template <class T>
  7. class myArray
  8. {
  9.     private:
  10.         T * myArr;
  11.         int size;
  12.         int startpos;
  13.         int endpos;
  14.     public:
  15.         myArray(int elements);
  16.         myArray(int start, int end);
  17.         ~myArray();
  18.          void SetNULL();
  19.          T & operator[](int i);
  20.  
  21.         friend std::ostream & operator<<(std::ostream & os, myArray<T> & arr)
  22.         {
  23.                           os << "{";
  24.             for(int i = 0; i < arr.size; i++)
  25.             {
  26.                 if(i == (arr.size - 1))
  27.                     os << arr.myArr[i];
  28.                 else
  29.                     os << arr.myArr[i] << ",";
  30.             }
  31.             os << "}\n";
  32.             return os;
  33.         }
  34.  
  35. };
  36.  
  37. template <class T>
  38. T & myArray<T>::operator[](int i)
  39. {
  40.     if(i > size)                    //IF OUT OF BOUNDS
  41.         throw std::string("Element out of array bounds...nothing to be done");
  42.     else if(startpos == 0)          //IF NORMAL ARRAY
  43.         return myArr[i];
  44.     else                            //IF CUSTOM BOUNDS
  45.     {
  46.         return myArr[(startpos + (i - 1))];
  47.     }
  48.  
  49.  
  50. }
  51.  
  52.  
  53. template <class T>
  54. myArray<T>::myArray(int elements):
  55. size(elements), startpos(0), endpos(elements)
  56. {
  57.     myArr = new T[size];            //ALLOCATE SPACE FOR ARRAY
  58.     SetNULL();                      //ZERO OUT
  59. }
  60.  
  61. template <class T>
  62. myArray<T>::myArray(int start, int end):
  63. startpos(start),                    //START POS
  64. endpos(end)
  65. {
  66.     if(start > end)                 //END IF INVALID BOUNDS
  67.     {
  68.         std::cerr << "Invalid start and end position..terminating...\n";
  69.         exit(0);
  70.     }else
  71.         size = end - start;         //DETERMINE SIZE
  72.     myArr  = new T[size];           //ALLOCATE SPACE FOR ARRAY
  73.     SetNULL();
  74.  
  75. }
  76.  
  77. template <class T>
  78. myArray<T>::~myArray()
  79. {
  80.     delete [] myArr;
  81. }
  82.  
  83. template <class T>
  84. void myArray<T>::SetNULL()          //SET ARR TO ZERO
  85. {
  86.     for(int i = 0; i < size; i++)
  87.     {
  88.         myArr[i] = (T)0;
  89.     }
  90. }
  91.  
  92.  
  93. #endif // MYARRAY_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement