fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 1e6 + 5;
  5.  
  6.  
  7. template<class T>
  8. class myvector {
  9. private:
  10. // capacity of array
  11. int capacity;
  12. // size in array
  13. int size;
  14. T *arr;
  15. public:
  16. myvector() {
  17. capacity = 10;
  18. arr = new T[10];
  19. size = 0;
  20. }
  21.  
  22. int get_length() {
  23. return size;
  24. }
  25.  
  26. void expand() {
  27. capacity *= 2;
  28. T *newarr = new int[capacity];
  29. for (int i = 0; i < size; i++) {
  30. newarr[i] = arr[i];
  31. }
  32. delete[]arr;
  33. arr = newarr;
  34. }
  35.  
  36. void append(int val) {
  37. if (size == capacity) {
  38. expand();
  39. }
  40. arr[size] = val;
  41. size++;
  42. }
  43.  
  44. T at(int idx) {
  45. if (idx < size && idx >= 0) {
  46. return arr[idx];
  47. }
  48. //cout << "nu such index";
  49. throw invalid_argument("no such index");
  50. }
  51.  
  52. void deleteat(int idx) {
  53. if (idx < size && idx >= 0) {
  54. for (int i = idx; i + 1 < size; i++) {
  55. arr[i] = arr[i + 1];
  56. }
  57. size--;
  58. return;
  59. }
  60. throw invalid_argument("no such index");
  61. }
  62.  
  63. void insertat(int idx, T val) {
  64. if (idx <= size && idx >= 0) {
  65. if (size == capacity) {
  66. expand();
  67. }
  68. for (int i = size; i > idx; i--) {
  69. arr[i] = arr[i - 1];
  70. }
  71. arr[idx] = val;
  72. size += 1;
  73. return;
  74. }
  75. throw invalid_argument("you can't insert here");
  76. }
  77.  
  78. void print() {
  79. for (int i = 0; i < size; i++) {
  80. cout << arr[i] << " ";
  81. }
  82. cout << endl;
  83. }
  84.  
  85. void clear() {
  86. delete[]arr;
  87. size = 0;
  88. capacity = 5;
  89. arr = new int[5];
  90. }
  91.  
  92. ~ myvector() {
  93. delete[] arr;
  94. }
  95. };
  96.  
  97.  
  98. int main() {
  99.  
  100. }
Success #stdin #stdout 0s 5292KB
stdin
Standard input is empty
stdout
Standard output is empty