Мне нужно написать реализацию push_back
для вектора. Но я не знаю как правильно.
template <typename T>
void Vector<T>::push_back(const T& value)
{
int* result = new int[mSize];
for (decltype(mSize) i = 0; i < mSize; ++i)
{
if (i != mSize - 1)
{
result[i] = mVector[i];
}
else
{
result[i] = value;
break;
}
}
mVector = result;
}
У меня есть 3 переменные
private:
size_t mSize;
size_t mCapacity;
T* mVector;
Переделала:
template <typename T>
void Vector<T>::PushBack(const T& value)
{
if (mSize == mCapacity)
{
size_t capacity = mCapacity * 2;
// Выделить новый массив tmp размером mCapacity*2
T* result = new T[capacity];
// Перенести в него всю информацию из старого массива
for (decltype(mSize) i = 0; i < mSize; ++i)
result[i] = mVector[i];
// Удалить старый и присвоить новый ( delete[] mVector; mVector = tmp)
delete[] mVector;
mVector = result
// Не забыть обновить mCapacity = mCapacity*2
mCapacity = capacity;
}
mVector[mSize++] = value;
}
Набросок:
if (mSize == mCapacity)
{
// Выделить новый массив tmp размером mCapacity*2
// Перенести в него всю информацию из старого массива
// Удалить старый и присвоить новый ( delete[] mVector; mVector = tmp)
// Не забыть обновить mCapacity = mCapacity*2
}
mVector[mSize++] = value;
Примерно так.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ввести предложения и вывести на экран те его слова, в которых удвоение букв, или вывести сообщение об отсутствии таких словНельзя использовать...
Заданный массив с n чиселПоменять местами последний элемент с первым элементом, равным x