Vector.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include <iostream>
  2. #include <string.h>
  3. class Vector
  4. {
  5. private:
  6. int* data;
  7. public:
  8. int lenght;
  9. Vector()
  10. {
  11. lenght = 0;
  12. data = new int[lenght];
  13. }
  14. Vector(Vector &v)
  15. {
  16. lenght = v.lenght;
  17. data = new int[lenght];
  18. memcpy(data, v.data, lenght*4);
  19. }
  20. void add(int value)
  21. {
  22. int* next_data = new int[lenght+1];
  23. memcpy(next_data, data, lenght*4);
  24. next_data[lenght] = value;
  25. delete[] data;
  26. data = next_data;
  27. lenght++;
  28. }
  29. void add(int value, int index)
  30. {
  31. if (index >= lenght)
  32. throw "Index bigger then lenght";
  33. int* next_data = new int[lenght+1];
  34. memcpy(next_data, data, index*4);
  35. next_data[index] = value;
  36. memcpy(next_data+index+1, data+index, (lenght-index)*4);
  37. delete[] data;
  38. data = next_data;
  39. lenght++;
  40. }
  41. int pop()
  42. {
  43. int* next_data = new int[lenght-1];
  44. int value = data[lenght-1];
  45. memcpy(next_data, data, (lenght-1)*4);
  46. delete[] data;
  47. data = next_data;
  48. lenght--;
  49. return value;
  50. }
  51. int pop(int index)
  52. {
  53. if (index >= lenght)
  54. throw "Index bigger then lenght";
  55. int* next_data = new int[lenght-1];
  56. int value = data[index];
  57. memcpy(next_data, data, index*4);
  58. memcpy(next_data+index, data+index+1, (lenght-index-1)*4);
  59. delete[] data;
  60. data = next_data;
  61. lenght--;
  62. return value;
  63. }
  64. int operator[](int index)
  65. {
  66. if (index >= lenght)
  67. throw "Index bigger then lenght";
  68. return data[index];
  69. }
  70. friend std::ostream &operator <<(std::ostream &os, Vector &v)
  71. {
  72. os << '[';
  73. for(int i = 0; i<v.lenght-1; i++)
  74. {
  75. os << v.data[i] << ',';
  76. }
  77. os << v.data[v.lenght-1] << ']';
  78. return os;
  79. }
  80. ~Vector()
  81. {
  82. delete[] data;
  83. }
  84. };