#cpp #vector
Мне нужно написать реализацию push_back для вектора. Но я не знаю как правильно. templatevoid Vector ::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 void Vector ::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; }
Ответы
Ответ 1
Набросок: if (mSize == mCapacity) { // Выделить новый массив tmp размером mCapacity*2 // Перенести в него всю информацию из старого массива // Удалить старый и присвоить новый ( delete[] mVector; mVector = tmp) // Не забыть обновить mCapacity = mCapacity*2 } mVector[mSize++] = value; Примерно так.
Комментариев нет:
Отправить комментарий