gpt4 book ai didi

c++ - `reverse_iterator`的限制原因

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:13 25 4
gpt4 key购买 nike

关于 the cppreference page of reverse_iterator我发现以下评论

std::reverse_iterator does not work with iterators that return a reference to a member object (so-called "stashing iterators"). An example of stashing iterator is std::filesystem::path::iterator.

这种说法正确吗?而且,如果是,那是为什么?

对我来说,限制是没有意义的,因为我假设反向迭代器基本上交换了 operator++operator -- (并存储底层迭代器一个)。

编辑:显然这个问题可能会被误解:我知道我们需要一次递减操作来实现反向迭代器。问题是为什么在构造 reverse_iterator 时没有实现。这样就避免了隐藏迭代器的问题。但显然这不是它的完成方式,每次取消引用迭代器时都会进行递减。为什么?

最佳答案

and stores the underlying iterator off by one

这就是原因。您必须在取消引用时召唤一个非逐一迭代器,如果破坏召唤的迭代器会使从中获得的引用无效(就像隐藏迭代器的情况一样),那么鼻恶魔。

关于c++ - `reverse_iterator`的限制原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50847021/

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