gpt4 book ai didi

c++ - 当列表为空时 std::list:begin() 的行为

转载 作者:IT老高 更新时间:2023-10-28 22:36:00 25 4
gpt4 key购买 nike

以下是否根据 C++ 标准给出了定义的结果?

std::list<int> myList;
std::list<int>::iterator myIter = myList.begin(); // any issues?
myList.push_back( 123 );
myIter++; // will myIter point to the 123 I pushed?

我可以在我正在使用的编译器上对此进行测试……但我想要一个更明确的答案。

最佳答案

所有标准迭代器和容器类型在这方面的行为都是相同的:

§23.2.1 [container.requirements.general] p6

begin() returns an iterator referring to the first element in the container. end() returns an iterator which is the past-the-end value for the container. If the container is empty, then begin() == end();

§24.2.3 [input.iterators] 中的表 107 要求作为 ++it 的先决条件,it 应为可取消引用,但对于过去的迭代器(即,您从 end() 获得的内容)而言,情况并非如此,因此您正在涉足未定义行为的可怕领域。

关于c++ - 当列表为空时 std::list:begin() 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10793404/

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