Реализация push_back для вектора

239
26 декабря 2017, 17:24

Мне нужно написать реализацию 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;
}
Answer 1

Набросок:

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

Примерно так.

READ ALSO
Нахождение слов, у которых есть удвоение букв [требует правки]

Нахождение слов, у которых есть удвоение букв [требует правки]

ввести предложения и вывести на экран те его слова, в которых удвоение букв, или вывести сообщение об отсутствии таких словНельзя использовать...

185
Как найти нужную строку в C++?

Как найти нужную строку в C++?

К примеру, есть файл lantxt

191
Помогите сделать прогу на тему Шаблоны функций,очень нужно для зачёта [требует правки]

Помогите сделать прогу на тему Шаблоны функций,очень нужно для зачёта [требует правки]

Заданный массив с n чиселПоменять местами последний элемент с первым элементом, равным x

189