Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2017, 15:20   #1
olena_nov
 
Регистрация: 26.12.2017
Сообщений: 8
По умолчанию Реализация функций reserve и clear для вектора

Мне нужно самой написать реализацию. От что у меня есть:
Код:
template<typename T>
void Vector<T>::PopBack()
{
    mVector[mSize - 1].~T();
    --mSize;
}
 
template<typename T>
size_t Vector<T>::Size() const
{
    return mSize;
}
 
template<typename T>
size_t Vector<T>::Capacity() const
{
    return mCapacity;
}
 
template<typename T>
bool Vector<T>::Empty() const
{
    return mSize == 0;
}
 
template<typename T>
void Vector<T>::Clear()
{
    for (decltype(mSize) i = 0; i < mSize; ++i)
        mVector[i].PopBack();
    mVector[mSize].~T();
    mSize = 0;
}
 
 
template<typename T>
void Vector<T>::Reserve(size_t capacity)
{
    if (mCapacity <= capacity)
    {
        T* result = new T[capacity];
 
        for (decltype(mSize) i = 0; i < mSize; ++i)
            result[i] = mCapacity[i];
        delete mCapacity;
        mCapacity = result;
    }
}
Но я функции reserve и clear не работают. Нужна ваша помощь. Как их переписать чтобы они работали?
И я не уверена правильно ли работает функция PopBack
olena_nov вне форума Ответить с цитированием
Старый 26.12.2017, 23:30   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Научитесь работать с placement new и тогда проблема отпадет.

А пока с Вашей реализацией вектора сделать резерв памяти для элементов не получится.
Croessmah вне форума Ответить с цитированием
Старый 27.12.2017, 06:32   #3
olena_nov
 
Регистрация: 26.12.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Научитесь работать с placement new и тогда проблема отпадет.

А пока с Вашей реализацией вектора сделать резерв памяти для элементов не получится.
а что у меня не так с реализацией вектора? Какая функция у меня не правильно работает?
olena_nov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужны программисты для исправления ошибок в S.T.A.L.K.E.R.: Clear Sky svyaznoy Фриланс 0 19.04.2016 20:20
реализация с использованием процедур и функций Olga1991_1 Общие вопросы C/C++ 6 02.12.2012 01:38
Реализация функций поиска MaxMad Помощь студентам 0 04.12.2010 15:16
Классы. Реализация понятия вектора в трёхмерном пространстве. Наташенька Общие вопросы C/C++ 6 28.04.2009 10:21
Реализация функций из библиотеки stdio.h Blade Общие вопросы C/C++ 9 23.11.2008 12:35