C/C++

Помогите с кодом с++


Почему не добавляет K элементов в конец массива, помогите с решением
#include <iostream>
#include <cstring>
using namespace std;
class Array {
public:
Array() : cap(step), len(0), box(new int[cap]) {}
explicit Array(const size_t len) : cap(len), len(len), box(new int[cap]) {
memset(box, 0, len * sizeof(int));
}
Array(const size_t len, const int value) : cap(len), len(len), box(new int[cap]) {
fill(begin(), end(), value);
}
explicit Array(initializer_list<int> lst) : cap(lst.size()), len(cap), box(new int[cap]) {
copy(lst.begin(), lst.end(), begin());
}
Array(const Array& arr) : cap(arr.cap), len(arr.len), box(new int[cap]) {
copy(arr.begin(), arr.end(), begin());
}
Array(Array&& arr) : cap(arr.cap), len(arr.len), box(new int[cap]) {
box = move(arr.box);
arr.box = nullptr;
}
~Array() {
if (box != nullptr) {
delete[] box;
box = nullptr;
}
}
Array& operator=(const Array& arr) {
if (this != &arr) {
delete[] box;
cap = arr.cap;
len = arr.len;
box = new int[cap];
copy(arr.begin(), arr.end(), begin());
}
return *this;
}
Array& operator=(Array&& arr) {
delete[] box;
cap = arr.cap;
len = arr.len;
box = new int[cap];
box = move(arr.box);
arr.box = nullptr;
return *this;
}
int& operator[](int i) {
return box[i];
}
void push_back(const int value) {
if (len == cap) {
auto tmp = new int[len];
copy(begin(), end(), tmp);
cap += step;
delete[] box;
box = new int[cap];
copy(tmp, tmp + len, box);
delete[] tmp;
}
box[len] = value;
++len;
}
void pop_back() {
if (len != 0) --len;
}
size_t capacity()const {
return cap;
}
size_t size()const {
return len;
}
bool empty()const {
return len == 0U;
}
void clear() {
len = 0;
}
void shrink_to_fit() {
auto tmp = new int[len];
copy(begin(), end(), tmp);
cap = len;
delete[] box;
box = new int[cap];
box = move(tmp);
tmp = nullptr;
}
int& front() {
return box[0];
}
int& back() {
return box[len - 1];
}
int* begin()const {
return box;
}
int* end()const {
return box + len;
}
private:
size_t cap;
size_t len;
int* box;
static const size_t step = 8;
friend ostream& operator<<(ostream& out, const Array& arr) {
for (auto item : arr) out << item << ' ';
return out;
}
};
int main() {
Array arr{ 1, 2, 3, 4, 5, 6 };
cout << "Array: " << arr << '\n';
cout << "Size: ";
size_t n;
cin >> n;
int value;
cout << "Elements: ";
for (size_t i = 0; i < n; ++i) {
cin >> value;
arr.push_back(value);
}
cout << "Array: " << arr << '\n';
}
Данила Щербаков
Данила Щербаков
71 101
Лучший ответ
невозможно скрины читать,
тем более тестировать.

выкладывайте код на https://pastebin.com

а сюда ссылку
Дима Огородник Здравствуйте, вот ссылка на код https://pastebin.com/0dcPbDR8
Ну, одна из причин - s (размер) после функции zadn не изменяется в основной программе. Как минимум размер в функцию нужно передавать по указателю.
Аскар Хасанов
Аскар Хасанов
51 411