Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Нужна реализация функции std::vector::insert() -


Автор: vvb2011 26.1.2016, 13:00
Нужна реализация функции std::vector::insert()  - C++ 
Написал сам,  но  не правильно работает. если нужнен полностю код Вектора, могу  сюда скинуть

Код

 template <typename T, typename Allocator>
typename Vector<T, Allocator>::iterator Vector<T, Allocator>::insert(iterator position, const value_type& val)
{
    const size_type new_size = m_size + 1;
    if (new_size > m_capacity)
        grow(2 * m_capacity);
    copy_backward(begin(), end(), position);
    m_allocator.construct(&*position, val);
    ++m_size;
}
 template <typename InputIterator, typename OutputIterator>
    void copy_backward(InputIterator begin1, InputIterator end1, OutputIterator end2)
    {
        iterator it = end1;
        iterator itEnd = begin1;
        for (; it != itEnd; --it)
        {
            ++end2;
        }
    }

 void construct(pointer block, const_reference object)
    {
        ::new (block) T(object);
    }
 

end2 - указывает за последний элемент диапазона, куда ты записать результат
 begin1 - первый элемент, из диапазона что читаешь
 end1 - идет за последним элементом диапазона, читаешь

Автор: borisbn 9.2.2016, 14:40
У Вас функция copy_backward на самом деле ничего не копирует. И зачем она принимает begin() ? Ей нужно только position и end().

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)