Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <cstdlib>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. template <typename T>
  10. class SimpleVector {
  11. public:
  12. SimpleVector(): _data(nullptr), _end(nullptr), _size(0), _capacity(0){};
  13.  
  14. explicit SimpleVector(size_t size) {
  15. _data = new T[size];
  16. _end = _data + size;
  17. _capacity = size;
  18. _size = size;
  19. };
  20.  
  21. ~SimpleVector() {
  22. delete []_data;
  23. };
  24.  
  25. T& operator[](size_t index) {return _data[index];};
  26. const T&operator[] (size_t index) const {return _data[index];};
  27.  
  28. T* begin() {return _data;};
  29. T* end() {return _end;};
  30. const T* begin() const { return _data;}
  31. const T* end() const { return _end;}
  32.  
  33. size_t Size() const {return _size;};
  34.  
  35. size_t Capacity() const {return _capacity;};
  36.  
  37. void PushBack(const T& value) {
  38. if (_capacity == 0) {
  39. _data = new T[1];
  40. _end = _data + 1;
  41. _capacity = 1;
  42. _size = 1;
  43. *_data = value;
  44. } else {
  45. if (Size() == Capacity()) {
  46. T* new_data = new T[Capacity()];
  47.  
  48. copy(_data, _end, new_data);
  49.  
  50. delete []_data;
  51. T* _data = new_data;
  52. _capacity *= 2;
  53. }
  54. _data[_size] = value;
  55. _size++;
  56. _end = _data + _size;
  57. }
  58. };
  59.  
  60. private:
  61. T* _data;
  62. T* _end;
  63. size_t _size;
  64. size_t _capacity;
  65. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement