gpt4 book ai didi

c++ - 如何测试列表或 forward_list 的迭代器(包括尾部迭代器和开始前迭代器)保持有效,

转载 作者:行者123 更新时间:2023-11-28 01:46:19 25 4
gpt4 key购买 nike

<分区>

学习 C++ Primer 并对练习 9.25 感到困惑。

考虑以下从列表中删除所有元素的代码:

list<int> lst = {0,1,2,3,4,5,6,7,8,9};
elem1 = lst.begin();
elem2 = lst.end();
elem1 = lst.erase(elem1, elem2);

练习 9.25 询问无效元素:如果 elem2 或 elem1 和 elem2 都是尾端迭代器,会发生什么情况?

我如何编写代码来测试这个具有尾端迭代器的问题?

我试过这个:

std::list<int> lst = { 0,1,2,3,4,5,6,7,8,9 };
lst.erase(lst.begin(), ++lst.end());

根据9.3.6节的文字:答案是

Iterators, pointers, and references (including the off-the-end and the 
before-the-beginning iterators) to a list or forward_list remain valid.

如何创建示例代码以查看解决方案是否正确?迭代器仍然有效?当我使用上面的代码时,抛出的错误是“list iterator not incrementable”

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com