完成List的删除操作
This commit is contained in:
@@ -130,8 +130,8 @@ namespace TinySTL{
|
|||||||
void insert(iterator position, size_type n, const value_type& val);
|
void insert(iterator position, size_type n, const value_type& val);
|
||||||
template <class InputIterator>
|
template <class InputIterator>
|
||||||
void insert(iterator position, InputIterator first, InputIterator last);
|
void insert(iterator position, InputIterator first, InputIterator last);
|
||||||
//iterator erase(iterator position);
|
iterator erase(iterator position);
|
||||||
//iterator erase(iterator first, iterator last);
|
iterator erase(iterator first, iterator last);
|
||||||
//void swap(List& x);
|
//void swap(List& x);
|
||||||
//void clear();
|
//void clear();
|
||||||
//void splice(iterator position, list& x);
|
//void splice(iterator position, list& x);
|
||||||
@@ -224,6 +224,28 @@ namespace TinySTL{
|
|||||||
void List<T>::insert(iterator position, InputIterator first, InputIterator last){
|
void List<T>::insert(iterator position, InputIterator first, InputIterator last){
|
||||||
insert_aux(position, first, last, typename std::is_integral<InputIterator>::type());
|
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
|
#endif
|
||||||
Reference in New Issue
Block a user