/
bpm242makarkosenko
/
myarray
Обзор
Документация
Войти
/
bpm242makarkosenko
/
myarray
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.cpp
83 строки
2 KB
bpm242makarkosenko
update main.cpp
14 апр 2025, 17:56
14 апр 2025, 17:56
29d8a72
Код
Авторство
О чём код?
#include "myvector.hpp" #include <cstring> // std::memcpy MyVector::MyVector() : m_size(0), m_data(nullptr) {} MyVector::MyVector(size_t size) : m_size(size), m_data(nullptr) { if (m_size > 0) { m_data = new int[m_size]; for (size_t i = 0; i < m_size; ++i) { m_data[i] = 0; } } } MyVector::~MyVector() { delete[] m_data; m_data = nullptr; m_size = 0; } // Копирующий конструктор MyVector::MyVector(const MyVector& other) : m_size(other.m_size), m_data(nullptr) { if (m_size > 0) { m_data = new int[m_size]; // копируем for (size_t i = 0; i < m_size; ++i) { m_data[i] = other.m_data[i]; } } } // Оператор присваивания копированием MyVector& MyVector::operator=(const MyVector& other) { if (this == &other) { return *this; } // Сначала освободим старые данные delete[] m_data; m_size = other.m_size; m_data = nullptr; if (m_size > 0) { m_data = new int[m_size]; for (size_t i = 0; i < m_size; ++i) { m_data[i] = other.m_data[i]; } } return *this; } // Move-конструктор MyVector::MyVector(MyVector&& other) noexcept : m_size(other.m_size), m_data(other.m_data) { // Обнуляем в source, т.к. мы забрали данные other.m_size = 0; other.m_data = nullptr; } // Move-оператор присваивания MyVector& MyVector::operator=(MyVector&& other) noexcept { if (this == &other) { return *this; } // Освободим свои старые данные delete[] m_data; // Забираем данные у other m_size = other.m_size; m_data = other.m_data; other.m_size = 0; other.m_data = nullptr; return *this; }