gpt4 book ai didi

c++ - *it++ 如何对输出迭代器有效?

转载 作者:IT老高 更新时间:2023-10-28 23:14:56 24 4
gpt4 key购买 nike

在示例代码中,我经常看到输出迭代器的代码如 *it++。表达式*it++ 复制it,递增it,然后返回最终解除引用的拷贝。据我了解,制作输出迭代器的拷贝会使源无效。但是在创建拷贝之后执行的 it 增量将是非法的,对吗?我对输出迭代器的理解有问题吗?

最佳答案

标准要求 *r++ = t 适用于输出迭代器 (24.1.2)。如果它不起作用,则它不是标准定义的输出迭代器。

由迭代器实现来确保此类语句在后台正常工作。

您不应该保留输出迭代器的多个拷贝的原因是它具有单遍语义。迭代器只能在每个值处取消引用一次(即它必须在每次取消引用操作之间递增)。一旦迭代器被取消引用,它的拷贝就不能被取消引用。

这就是 *r++ = t 起作用的原因。复制原始迭代器,取消引用原始迭代器并增加拷贝。原来的迭代器将永远不会被再次使用,并且拷贝不再引用相同的值。

关于c++ - *it++ 如何对输出迭代器有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4001517/

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