C++ primer 第五版 中文版 练习 9.31
题目:第316页中删除偶数值元素并复制奇数值元素的程序不能用于list或forward_list。为什么?修改程序,使之也能用于这些类型。
答:
list 不支持+的操作,forward_list不支持直接insert,必须要有个前驱。
/*
第316页中删除偶数值元素并复制奇数值元素的程序不能用于list或forward_list。为什么?
修改程序,使之也能用于这些类型。
*/
#include <iostream>
#include <list>
#include <forward_list>
using std::cout;
using std::endl;
using std::list;
using std::forward_list;
int main()
{
list<int> llist = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
forward_list<int> flist = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
cout << "操作前list容器的内容为:";
for (auto &a : llist)
cout << a << " ";
cout << endl;
auto iter = llist.begin();
while (iter != llist.end())
{
if (*iter % 2)
{
iter = llist.insert(iter, *iter);
++iter;
++iter;
}
else
{
iter =