Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. template<typename A>
  2. class Vector {
  3. public:
  4. Vector(size_t capacity=1) {
  5. m_elements = new A*[capacity];
  6. m_capacity = capacity;
  7. m_size = 0;
  8. }
  9. ~Vector() {
  10. for (int i=0; i < m_size; ++i) {
  11. delete m_elements[i];
  12. }
  13. delete m_elements;
  14. }
  15. bool pushBack(const A &elem) {
  16. if (m_size == m_capacity) {
  17. m_capacity *= 2;
  18. m_elements = (A**) realloc(m_elements, (m_capacity + 1) * sizeof(A*));
  19. }
  20. m_elements[m_size++] = new A(elem);
  21. }
  22. Vector(const Vector &other) {
  23. m_size = other.m_size;
  24. m_capacity = other.m_capacity;
  25. m_elements = new A*[m_capacity];
  26. for (int i=0; i < m_size; ++i) {
  27. m_elements[i] = new A(*(other.m_elements[i]));
  28. }
  29. }
  30. Vector &operator=(const Vector &other) {
  31. for (int i=0; i < m_size; ++i) {
  32. delete m_elements[i];
  33. }
  34. delete m_elements;
  35. m_size = other.m_size;
  36. m_capacity = other.m_capacity;
  37. m_elements = new A*[m_capacity];
  38. for (int i=0; i < m_size; ++i) {
  39. m_elements[i] = new A(*(other.m_elements[i]));
  40. }
  41. return *this;
  42. }
  43. public:
  44. size_t m_size;
  45. size_t m_capacity;
  46. A **m_elements;
  47. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement