📅  最后修改于: 2023-12-03 14:39:51.850000             🧑  作者: Mango
forward_list
是 C++ STL 中的单向链表。forward_list::clear()
和 forward_list::erase_after()
是两种清除 forward_list
中元素的方法。forward_list::clear()
会删除整个链表上的所有节点,而 forward_list::erase_after()
只会删除指定位置之后的节点。
forward_list::clear()
#include<forward_list>
using std::forward_list;
int main(){
forward_list<int> mylist {1, 2, 3};
mylist.clear(); //清空整个链表
return 0;
}
forward_list::erase_after()
#include<forward_list>
using std::forward_list;
int main(){
forward_list<int> mylist {1, 2, 3, 4, 5, 6};
auto it = mylist.before_begin(); //获取链表首节点前面的位置
++it; //将it移动到第一个节点的位置
mylist.erase_after(it); //删除节点2
return 0;
}
forward_list::erase_after()
和forward_list::clear()
的区别forward_list::erase_after()
只清除指定位置后的节点,而 forward_list::clear()
清除整个链表。forward_list::erase_after()
需要迭代器找到要删除节点的前一个节点的位置,而 forward_list::clear()
不需要迭代器,操作简单。forward_list::erase_after()
中需要注意指定位置为空的情况,否则会出现运行时错误。forward_list::erase_after()
删除节点时,需要保证该节点存在并且不是最后一个节点。否则会出现未定义的行为。forward_list::clear()
和 forward_list::erase_after()
是清除 forward_list
中元素的两种方法。它们的设计目标不同,可以根据情况选择使用。在使用 forward_list::erase_after()
删除节点时,需要注意保证该节点存在并且不是最后一个节点。