gpt4 book ai didi

c++ - 制作不存储 value_type 的 InputIterator

转载 作者:太空狗 更新时间:2023-10-29 23:13:06 24 4
gpt4 key购买 nike

我正在创建一个模拟 InputIterator 的类型。在我的应用程序中,“跳过前十万个元素”是一个合理的做法,并且创建 value_type 是昂贵的,所以我希望我的迭代器只创建 value_type取消引用时,而不是递增时。

我可以轻松地让 operator* 按值返回 value_type。但是我不知道如何处理 operator->。如果我的迭代器没有存储 value_type,我该如何返回一个指针?我担心临时指针会导致生命周期问题,并且不想被烧毁。

我考虑过不提供operator->,但这样我就没有完整的InputIterator

最佳答案

我相信从迭代器的 operator-> 中按值返回代理对象会起作用。代理将有一个 value_type 数据成员,它自己的 operator-> 返回指向该数据成员的指针。

代理对象的生命周期与任何其他按值返回的对象相同(就像我对 operator* 的计划),所以尽管我确实有一个指向临时对象的指针,但在这些情况下它在代理对象被销毁之前被消耗。

关于c++ - 制作不存储 value_type 的 InputIterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41662639/

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