fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6. template <typename T>
  7. class BasicVector
  8. {
  9. private:
  10. int vector_size;
  11. int vector_capacity;
  12. T* data;
  13.  
  14. void resize();
  15.  
  16. public:
  17. BasicVector(size_t capacity = 0);
  18. ~BasicVector();
  19.  
  20. void push_back(T);
  21. void insert(int, T);
  22. };
  23.  
  24.  
  25. template <typename T>
  26. void BasicVector<T>::resize()
  27. {
  28. T* temp = data;
  29. T* newDataCap = new T[vector_capacity * 2];
  30. this->data = newDataCap;
  31. for (int i = 0; i < vector_size; i++)
  32. {
  33. data[i] = temp[i];
  34. }
  35. vector_capacity *= 2;
  36. delete[] temp;
  37. }
  38.  
  39. template <typename T>
  40. BasicVector<T>::BasicVector(size_t capacity)
  41. {
  42. if (capacity < 16)
  43. {
  44. capacity = 16;
  45. }
  46. else if (capacity >= 16 && capacity % 2 == 1)
  47. {
  48. capacity = capacity + 1;
  49. }
  50. vector_capacity = capacity;
  51. data = new T[vector_capacity];
  52. vector_size = 0;
  53. }
  54.  
  55. template <typename T>
  56. BasicVector<T>::~BasicVector()
  57. {
  58. delete[] data;
  59. }
  60.  
  61. template <typename T>
  62. void BasicVector<T>::push_back(T element)
  63. {
  64. if (vector_size == vector_capacity)
  65. {
  66. resize();
  67. }
  68. data[vector_size] = element;
  69. vector_size++;
  70. }
  71.  
  72. template <typename T>
  73. void BasicVector<T>::insert(int elemNum, T element)
  74. {
  75. if (vector_size == vector_capacity)
  76. {
  77. resize();
  78. }
  79. T* temp = new T[vector_size];
  80.  
  81. for (int i = 0; i < vector_size; i++)
  82. {
  83. temp[i] = data[elemNum + i - 1];
  84. }
  85.  
  86. for (int j = 0; j < vector_size; j++)
  87. {
  88. data[elemNum + j] = temp[j];
  89. }
  90.  
  91. data[elemNum - 1] = element;
  92.  
  93. vector_size++;
  94.  
  95. delete[] temp;
  96. }
  97.  
  98. template <typename T>
  99. void theWorkingFunction(BasicVector<T> &vector)
  100. {
  101. {
  102. int elemNum;
  103. T element;
  104. cin >> elemNum >> element;
  105. vector.insert(elemNum, element);
  106. }
  107. {
  108. T element;
  109. cin >> element;
  110. vector.push_back(element);
  111. }
  112. }
  113.  
  114. int main()
  115. {
  116. BasicVector<string> vector;
  117. theWorkingFunction(vector);
  118. return 0;
  119. }
Runtime error #stdin #stdout 0s 4508KB
stdin
0 foo foo
stdout
Standard output is empty