gpt4 book ai didi

c++ - 减少 begin() 迭代器然后再次增加它

转载 作者:可可西里 更新时间:2023-11-01 18:19:58 25 4
gpt4 key购买 nike

这样的陈述是否符合标准?

std::string str{"123"};
auto it = str.begin();
--it;
++it; // Does *it point to character '1' now?

我已经在 g++ 4.7.2 和 clang++ 3.5 上试过了 - *it 返回 '1'。这是 C++11 中的标准行为吗?

最佳答案

不,这是无效的。

这是未定义的行为,因为 24.2.6 [bidirectional.iterators] 指出 --it 的后置条件是结果必须是可取消引用的。由于它在您的示例中指向 begin() 之前,因此不满足此条件,因此该代码是非法的。

由于不需要诊断,它可能似乎有效,但您不能(也不应该)依赖它。

关于c++ - 减少 begin() 迭代器然后再次增加它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054626/

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