Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <algorithm>
- using namespace std;
- class MyVector
- {
- private:
- size_t size;
- size_t capacity;
- int* data;
- public:
- MyVector()
- {
- size = capacity = 0;
- data = nullptr;
- }
- MyVector(size_t _size, int value = 0)
- {
- size = _size;
- capacity = size + size / 2;
- data = new int[capacity];
- fill(data, data + capacity, 0);
- }
- /* Конструктор копирования вызывается в тех случаях, когда необходимо создать копию существующего объекта, а именно:
- * при передаче объекта в функцию по значению
- * при возвращении объекта из функцию по значению
- * при создании нового объекта как копии уже существующего
- Указатель this в данном методе используется в демонстрационных целях. В большинстве случаем его можно опустить, хотя есть исключения,
- о которых будем говорить дополнитьельно
- */
- MyVector(const MyVector& other)
- {
- this->size = other.size;
- this->capacity = other.capacity;
- this->data = new int[capacity];
- copy(other.data, other.data + other.capacity, this->data);
- }
- void print()
- {
- for (size_t i = 0; i < size; i++)
- {
- cout << setw(4) << data[i]; // манипулятор setw задает количество знакомест на экране под вывод числа из массива
- }
- cout << endl;
- }
- void push_back(int value)
- {
- if (size < capacity)
- {
- data[size] = value;
- size++;
- }
- // TODO: Добавить реализацию с перераспределением памяти
- }
- /************************************************************************************************/
- /*
- Добавить в проект:
- - Конструктор, который принимает в качестве параметра массив и количество элементов в нем
- - Конструктор, который принимает в качестве параметра три числа, два из которых задают диапазон чисел, который будет использоваться в качестве элементов массива,
- третий параметр задает шаг, то есть:
- вызов конструктора MyVector v(1, 10, 2) должен создать вектор со следующим набором данных: [1, 3, 5, 7, 9]
- Учитывайте то, что последовательность может быть как возрастающая, так и убывающая
- - Метод getSize(), который будет возвращать текущее значение size
- - Метод getCapacity(), который будет возвращать текущее значение capacity
- - Метод reserve(size_t _capacity), который будет выполнять перераспределение памяти для резервирования
- - Метод clear(), который будет очищать вектор, устанавливать его размер в 0 и сохраняя исходное значение capacity
- */
- };
- int main()
- {
- MyVector v1(5);
- v1.print();
- v1.push_back(-1);
- v1.print();
- }
Add Comment
Please, Sign In to add comment