forward_list的特殊用法
因为其是单项链表,所以在进行增删元素时,该元素的后继会发生改变,故我们需要访问其前驱以此改变前驱的链接
题:编写程序,查找并删除forward_list中的奇数元素
#include <iostream>
#include <string>
#include <forward_list>
using namespace std;
int main()
{
forward_list<int> flst = { 1,2,3,4,5,6,7,8,9 };
//删除奇数
auto prev = flst.before_begin(); //prev表示首元素的前驱
auto curr = flst.begin(); //curr表示其首元素
while (curr != flst.end())
{
if (*curr % 2 != 0)
{
curr = flst.erase_after(prev); // erase_after将prev之后的元素删除,并将curr重置为erase_after之后的返回值
}
else
{
prev = curr; //移动迭代器,使prev指向下一元素
++curr;
}
}
for (auto n : flst)
{
cout << n << " ";
}
cout << endl;
}