Advertisement
Guest User

Untitled

a guest
May 24th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #ifndef ARRAY_H
  2. #define ARRAY_H
  3.  
  4. template <typename T>
  5. class Array {
  6. unsigned int m_size;
  7. T *arr;
  8. public:
  9. class iterator{
  10. T *ptr;
  11. public:
  12. iterator(T *ptr){
  13. this->ptr=ptr;
  14. }
  15. iterator operator++(int){
  16. ptr++;
  17. return *this;
  18. }
  19. iterator operator++(){
  20. iterator i=*this;
  21. ptr++;
  22. return *this;
  23. }
  24. T& operator *(){
  25. return *ptr;
  26. }
  27. T* operator ->(){
  28. return ptr;
  29. }
  30. bool operator ==(const iterator &right){
  31. return ptr==right.ptr;
  32. }
  33. bool operator !=(const iterator &right){
  34. return ptr!=right.ptr;
  35. }
  36. };
  37.  
  38. Array(int size);
  39. ~Array();
  40. int size();
  41. T& operator[](int index);
  42. iterator begin();
  43. iterator end();
  44. };
  45.  
  46. template <typename T>
  47. typename Array<T>::iterator Array<T>::begin()
  48. {
  49. return iterator(arr);
  50. }
  51.  
  52. template <typename T>
  53. typename Array<T>::iterator Array<T>::end()
  54. {
  55. return iterator(arr+m_size);
  56. }
  57.  
  58. template <typename T>
  59. Array<T>::Array(int size) {
  60. this->m_size=size;
  61. this->arr=new T[size];
  62. }
  63.  
  64. template <typename T>
  65. Array<T>::~Array() {
  66. delete [] arr;
  67. }
  68.  
  69. template <typename T>
  70. int Array<T>::size() {
  71. return m_size;
  72. }
  73.  
  74. template <typename T>
  75. T& Array<T>::operator[](int index) {
  76. return arr[index];
  77. }
  78.  
  79.  
  80. #endif // ARRAY_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement