《C++ Primer》7.28

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;

}
上一篇:学会Python之后,在也不怕情人节、520、新年各种节日怎么表白了


下一篇:ebtables