Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h> //memcpy
- using namespace std;
- /* Векторы */
- class vector{
- private:
- const int _dc = 2;
- int* _data;
- int _size;
- int _capacity;
- public:
- vector(){
- _capacity = _dc;
- _size = 0;
- _data = new int[_capacity];
- }
- void push(int key){
- if(_size == _capacity){
- _capacity += _dc;
- int* t = new int[_capacity];
- memcpy(t, _data, sizeof(int) * _size);
- delete[] _data;
- _data = t;
- }
- _data[_size] = key;
- _size++;
- }
- void remove(int i){
- if(i < _size){
- memcpy(_data + i, _data + i + 1, sizeof(int)*(_size-i-1));
- _size--;
- }
- }
- //insert - вставка значения key в массив под индексом i
- void insert(int i, int key){
- if(i > _size || _size < 0){ //Если i за пределами массива, выдаём ошибку
- cout << "Ошибка";
- return;
- }
- if(_size == _capacity){ //Если память, выделенный под массив, заполнен,
- _capacity += _dc; //то выделяем дополнительную память для массива
- int* t = new int[_capacity];
- memcpy(t, _data, sizeof(int) * _size);
- delete[] _data;
- _data = t;
- }
- memcpy(_data + i + 1, _data + i, sizeof(int)*(_size-i)); //начиная с i-ого и элемента все элементы справа передвигаем на 1 шаг направо
- _data[i] = key; //присваиваем значение key i-ому элементу
- _size++; //увеличиваем размер массива на 1, потому что мы вставили в массив ещё 1 элемент
- }
- int size(){
- return _size;
- }
- int capacity(){
- return _capacity;
- }
- void print(){
- for(int i = 0; i < _size; i++){
- cout << "{" << _data[i] << "} ";
- }
- }
- int operator [](int i){
- return _data[i];
- }
- ~vector(){
- delete[] _data;
- }
- };
- int main() {
- setlocale(LC_ALL, "RUSSIAN");
- vector v;
- for(int i = 0; i < 10; i++) //заполняем массив (вектор) v
- v.push(i);
- cout << "Первоначальный массив: " << endl;
- v.print(); //печатаем массив (вектор)
- cout << endl << endl;
- v.insert(1, 145); //вставляем значение 145 под индексом 3
- cout << "Конечный массив: " << endl;
- v.print(); //Выводим получившийся массив
- // for(int i = 0; i < v.size(); i++)
- // cout << "{" << v[i] << "} ";
- // int *y = new int;
- // *y = 15;
- // int t = 15;
- // if(t == *y) cout << "l" << endl;
- // cout << y;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement