Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h> //memcpy
  3.  
  4. using namespace std;
  5.  
  6. /* Векторы */
  7.  
  8. class vector{
  9. private:
  10. const int _dc = 2;
  11. int* _data;
  12. int _size;
  13. int _capacity;
  14.  
  15. public:
  16. vector(){
  17. _capacity = _dc;
  18. _size = 0;
  19. _data = new int[_capacity];
  20. }
  21.  
  22. void push(int key){
  23. if(_size == _capacity){
  24. _capacity += _dc;
  25. int* t = new int[_capacity];
  26. memcpy(t, _data, sizeof(int) * _size);
  27. delete[] _data;
  28. _data = t;
  29. }
  30. _data[_size] = key;
  31. _size++;
  32. }
  33.  
  34. void remove(int i){
  35. if(i < _size){
  36. memcpy(_data + i, _data + i + 1, sizeof(int)*(_size-i-1));
  37. _size--;
  38. }
  39. }
  40.  
  41. //insert - вставка значения key в массив под индексом i
  42. void insert(int i, int key){
  43. if(i > _size || _size < 0){ //Если i за пределами массива, выдаём ошибку
  44. cout << "Ошибка";
  45. return;
  46. }
  47.  
  48. if(_size == _capacity){ //Если память, выделенный под массив, заполнен,
  49. _capacity += _dc; //то выделяем дополнительную память для массива
  50. int* t = new int[_capacity];
  51. memcpy(t, _data, sizeof(int) * _size);
  52. delete[] _data;
  53. _data = t;
  54. }
  55.  
  56. memcpy(_data + i + 1, _data + i, sizeof(int)*(_size-i)); //начиная с i-ого и элемента все элементы справа передвигаем на 1 шаг направо
  57. _data[i] = key; //присваиваем значение key i-ому элементу
  58. _size++; //увеличиваем размер массива на 1, потому что мы вставили в массив ещё 1 элемент
  59.  
  60. }
  61.  
  62. int size(){
  63. return _size;
  64. }
  65.  
  66. int capacity(){
  67. return _capacity;
  68. }
  69.  
  70. void print(){
  71. for(int i = 0; i < _size; i++){
  72. cout << "{" << _data[i] << "} ";
  73. }
  74. }
  75.  
  76. int operator [](int i){
  77. return _data[i];
  78. }
  79.  
  80. ~vector(){
  81. delete[] _data;
  82. }
  83.  
  84. };
  85.  
  86. int main() {
  87. setlocale(LC_ALL, "RUSSIAN");
  88. vector v;
  89.  
  90. for(int i = 0; i < 10; i++) //заполняем массив (вектор) v
  91. v.push(i);
  92.  
  93. cout << "Первоначальный массив: " << endl;
  94. v.print(); //печатаем массив (вектор)
  95. cout << endl << endl;
  96.  
  97. v.insert(1, 145); //вставляем значение 145 под индексом 3
  98.  
  99. cout << "Конечный массив: " << endl;
  100. v.print(); //Выводим получившийся массив
  101.  
  102.  
  103. // for(int i = 0; i < v.size(); i++)
  104. // cout << "{" << v[i] << "} ";
  105. // int *y = new int;
  106. // *y = 15;
  107. // int t = 15;
  108. // if(t == *y) cout << "l" << endl;
  109. // cout << y;
  110. return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement