#include <iostream>
#include <string>
using namespace std;
#define RETURN return 0
class Dinamic
{
public:
Dinamic()
{
cout<<"Constructor\t"<<this<<endl;
size=1;
arr = new int[size];
}
Dinamic(const Dinamic& FromCopy)
{
}
~Dinamic()
{
delete[]arr;
}
//methods
void push_back(const int& value)
{
int* NewArr = new int[(this->size+1)];
for(int i = 0; i < (this->size+1);i++)
{
NewArr[i]=this->arr[i];
}
NewArr[size]=value;
size++;
delete[]arr;
arr=NewArr;
}
void PrintArray()
{
for(int i = 1; i < size; i++)
{
cout<<arr[i]<<"\t";
}
cout<<endl;
}
private:
int* arr;
int size;
};
int main()
{
Dinamic l;
l.push_back(8);
l.push_back(8);
l.PrintArray();
RETURN;
}
у меня все работает хорошо, но в arr[0] где то присваивается 0. Поэтому я пишу в PrintArray int i = 1. Я не могу понять ГДЕ ПРИСВАИВАЕТСЯ 0? помогите пожалуйста)
PrintArray: int i = 0
Проблема в том, что Вы не используете элемент с индексом 0.
При добавлении элемента проверяйте: если указатель на массив равен null, создавайте массив из одного элемента и кладите туда добавляемый элемент. Если не null - так, как у Вас уже сделано, кроме условия цикла. Должно быть
j < this->size
Если коротко - заменить в конструкторе на
size=0;
arr = 0;
У вас сразу есть 1 элемент в массиве (вот этот 0) и вы его тащите до конца.
Важно, в коде будет вызван delete[] на null массив. Насколько я знаю, это безопасно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Можно ли, с помощью JS, как-то управлять стилями, атрибутами svg, который подключен через тег img ?
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском