Push back implementation for a vector

I need to write an implementation of push_back for a vector. But I do not know how to do it correctly.

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;
}

I have 3 variables

 private:
     size_t mSize;
     size_t mCapacity;
     T* mVector;

Redone it:

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;
}
 5
Author: Harry, 2017-12-25

1 answers

Sketch:

if (mSize == mCapacity)
{
    // Выделить новый массив tmp размером mCapacity*2
    // Перенести в него всю информацию из старого массива
    // Удалить старый и присвоить новый ( delete[] mVector; mVector = tmp)
    // Не забыть обновить mCapacity = mCapacity*2
}
mVector[mSize++] = value;

Something like this.

 4
Author: Harry, 2017-12-25 12:40:49