Вам не нужно определять свою собственную функцию подкачки, так как заголовок <iostream>
включает в себя функцию std::swap
. Но, если вы не хотите использовать std::swap
, вы можете определить свою собственную функцию подкачки так:
template<typename _Tp>
void swap(_Tp &a, _Tp &b)
{
_Tp tempVal = a;
a = b;
b = tempVal;
}
Теперь о функции стирания: поскольку вы реализуете вектор с массивом, ваша функция стирания должна:
1) вызвать деструктор элемента, который вы хотите стереть (если он есть)
2) переместить все элементы, которые находятся справа от удаленного элемента на одну позицию влево
3) возвращает итератор произвольного доступа, указывающий на новое местоположение элемента, который следует за последним элементом, стертым при вызове функции, который является концом вектора, если операция стерла последний элемент в последовательности.
4) изменить размер вектора
Предположим, что у вас есть функция стирания, которая стирает один элемент, тогда версия стирания, которая стирает все элементы, выделенные итераторами a, b, будет выглядеть так:
iterator
erase(iterator first, iterator last)
{
while (first != last)
first = erase(first);
return last;
}