View difference between Paste ID: 8CBp4nkR and 4Td4gbQT
SHOW: | | - or go back to the newest paste.
1
#include <iostream>
2
#include <iomanip>
3
#include <algorithm>
4
using namespace std;
5
6
7
class MyVector
8
{
9
private:
10
	size_t size;
11
	size_t capacity;
12
	int* data;
13
14
public:
15
	MyVector()
16
	{
17
		size = capacity = 0;
18
		data = nullptr;
19
	}
20
21
	MyVector(size_t _size, int value = 0)
22
	{
23
		size = _size;
24
		capacity = size + size / 2;
25
26
		data = new int[capacity];
27
		fill(data, data + capacity, 0);
28
	}
29
30
	/* Конструктор копирования вызывается в тех случаях, когда необходимо создать копию существующего объекта, а именно: 
31
		* при передаче объекта в функцию по значению
32
		* при возвращении объекта из функцию по значению
33
		* при создании нового объекта как копии уже существующего
34
35
		Указатель this в данном методе используется в демонстрационных целях. В большинстве случаем его можно опустить, хотя есть исключения, 
36
		о которых будем говорить дополнитьельно
37
38
	*/
39
	MyVector(const MyVector& other)
40
	{
41
		this->size = other.size;
42
		this->capacity = other.capacity;
43
44
		this->data = new int[capacity];
45
		copy(other.data, other.data + other.capacity, this->data);
46
	}
47
48
	void print()
49
	{
50
		for (size_t i = 0; i < size; i++)
51
		{
52
			cout << setw(4) << data[i];		// манипулятор setw задает количество знакомест на экране под вывод числа из массива
53
		}
54
		cout << endl;
55
	}
56
57
	void push_back(int value)
58
	{
59
		if (size < capacity)
60
		{
61
			data[size] = value;
62
			size++;
63
		}
64
		// TODO: Добавить реализацию с перераспределением памяти
65
	}
66
67
	/************************************************************************************************/
68
69
	/*
70
		Добавить в проект: 
71
		- Конструктор, который принимает в качестве параметра массив и количество элементов в нем
72
		- Конструктор, который принимает в качестве параметра три числа, два из которых задают диапазон чисел, который будет использоваться в качестве элементов массива, 
73
		  третий параметр задает шаг, то есть: 
74
		  вызов конструктора MyVector v(1, 10, 2) должен создать вектор со следующим набором данных: [1, 3, 5, 7, 9]
75
		  Учитывайте то, что последовательность может быть как возрастающая, так и убывающая 
76
		- Метод getSize(), который будет возвращать текущее значение size
77
		- Метод getCapacity(), который будет возвращать текущее значение capacity
78
		- Метод reserve(size_t _capacity), который будет выполнять перераспределение памяти для резервирования 
79
		- Метод clear(), который будет очищать вектор, устанавливать его размер в 0 и сохраняя исходное значение capacity
80
	*/
81
};
82
83
int main()
84
{
85
	MyVector v1(5);
86
	v1.print();
87
	v1.push_back(-1);
88
	v1.print();
89
90
}