完成List的删除操作

This commit is contained in:
邹晓航
2014-11-26 15:00:00 +08:00
parent fc5d2733fa
commit 08aa19c069

View File

@@ -130,8 +130,8 @@ namespace TinySTL{
void insert(iterator position, size_type n, const value_type& val);
template <class InputIterator>
void insert(iterator position, InputIterator first, InputIterator last);
//iterator erase(iterator position);
//iterator erase(iterator first, iterator last);
iterator erase(iterator position);
iterator erase(iterator first, iterator last);
//void swap(List& x);
//void clear();
//void splice(iterator position, list& x);
@@ -224,6 +224,28 @@ namespace TinySTL{
void List<T>::insert(iterator position, InputIterator first, InputIterator last){
insert_aux(position, first, last, typename std::is_integral<InputIterator>::type());
}
template<class T>
typename List<T>::iterator List<T>::erase(iterator position){
if (position == head){
pop_front();
return head;
}else{
auto prev = position.p->prev;
prev->next = position.p->next;
position.p->next->prev = prev;
deleteNode(position.p);
return iterator(prev->next);
}
}
template<class T>
typename List<T>::iterator List<T>::erase(iterator first, iterator last){
typename List<T>::iterator res;
for (; first != last; ){
auto temp = first++;
res = erase(temp);
}
return res;
}
}
#endif