C/C++

Программирование с использованием шаблона класса.

Класс – контейнер ВЕКТОР с элементами типа int. Реализовать
операции:
[] – доступа по индексу;
() – определение размера вектора;
+ число – добавляет константу ко всем элементам вектора;
Пользовательский класс Time для работы с временными
интервалами. Интервал должен быть представлен в виде двух
полей: минуты типа int и секунды типа int. при выводе минуты
отделяются от секунд двоеточием.
#include <iostream>
#include <iomanip>
using namespace std;
class Vector {
public:
Vector() : n(0), vec(nullptr) {}
explicit Vector(const size_t n) : n(n), vec(new int[n]) {}
explicit Vector(const initializer_list<int> lst) : n(lst.size()), vec(new int[n]) {
copy(lst.begin(), lst.end(), vec);
}
Vector(const Vector& v) : n(v.size()), vec(new int[n]) {
copy(v.begin(), v.end(), vec);
}
Vector(Vector&& v) : n(v.size()), vec(new int[n]) {
vec = move(v.vec);
v.vec = nullptr;
}
~Vector() {
if (vec != nullptr) {
delete[] vec;
vec = nullptr;
}
}
Vector& operator=(const Vector& v) {
if (&v != this) {
if (vec != nullptr) delete[] vec;
n = v.size();
vec = new int[n];
copy(v.begin(), v.end(), vec);
}
return *this;
}
Vector& operator=(Vector&& v) {
if (&v != this) {
n = v.size();
vec = move(v.vec);
v.vec = nullptr;
}
return *this;
}
int& operator[](int index) {
return vec[index];
}
Vector operator+(int value) {
Vector tmp = *this;
for (auto& x : tmp) x += value;
return tmp;
}
size_t size()const {
return n;
}
int* begin()const {
return vec;
}
int* end()const {
return vec + n;
}
private:
size_t n;
int* vec;
};
int main() {
Vector vec{ 2, 3, 7, 9, 3, 7, 5, 6 };
for (auto i = 0U; i < vec.size(); ++i) cout << setw(4) << vec[i] << ' ';
puts("");
vec = vec + 15;
for (auto i = 0U; i < vec.size(); ++i) cout << setw(4) << vec[i] << ' ';
puts("");
system("pause > nul");
}
Константин Нуруллин
Константин Нуруллин
70 929
Лучший ответ