当前位置:   article > 正文

C++ Primer 第5版--练习9.31_c++ primer 9.31

c++ primer 9.31

练习 9.31:第 316 页中删除偶数值元素并复制奇数值元素的程序不能用于list或forward_list。为什么?修改程序,使之也能用于这些类型。

  1. #include <iostream>
  2. #include <list>
  3. #include <forward_list>
  4. using std::cout;
  5. using std::forward_list;
  6. using std::list;
  7. int main()
  8. {
  9. list<int> lst = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
  10. auto iter = lst.begin();
  11. while (iter != lst.end())
  12. {
  13. if (*iter % 2)
  14. lst.insert(iter, *iter++);
  15. else
  16. iter = lst.erase(iter);
  17. }
  18. cout << "删除偶数元素,复制奇数元素后的lst为:";
  19. for (const auto &n : lst)
  20. cout << n << ' ';
  21. forward_list<int> flst = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
  22. auto prev = flst.before_begin();
  23. auto iterf = flst.begin();
  24. while (iterf != flst.end())
  25. {
  26. if (*iterf % 2)
  27. {
  28. iterf = flst.insert_after(iterf, *iterf);
  29. prev = iterf;
  30. ++iterf;
  31. }
  32. else
  33. {
  34. iterf = flst.erase_after(prev);
  35. }
  36. }
  37. cout << "\n删除偶数元素,复制奇数元素后的flst为:";
  38. for (const auto &n : flst)
  39. cout << n << ' ';
  40. return 0;
  41. }


本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/178285
推荐阅读
相关标签
  

闽ICP备14008679号