gpt4 book ai didi

c++ - 当您无法测量差异时如何处理 iterator::difference_type?

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

我正在为第 3 方 C 库编写 C++ 包装器。

该库提供了一些用于迭代一系列对象的函数。

我想编写一个迭代器来包装此行为,以便迭代更容易,但我想不出我将如何提供强制性的“差异”类型,因为迭代对象没有有意义的相对顺序和 API我正在使用不提供提前查找可用对象数量的方法。

我无法在迭代时对对象进行计数,因为尽管这可以解决单个迭代器,但它会导致 end() 迭代器和其他迭代器之间的差异未定义。

最佳答案

C++ 中的所有迭代器都需要提供某种difference_type。该类型是否有意义有用是一个完全不同的问题。

根据您的描述,您似乎正在使用输入迭代器,它使您能够单次传递数据流,但不能备份或在流中保存位置。对于输入迭代器,仍然需要定义一个 difference_type,但是没有有意义的方法来获取两个迭代器的差异。测量距离的唯一方法是手动计算您所看到的元素数量。

在这里使用默认的 std::ptrdiff_t 可能是非常合理的,除非你有一个数据流可以产生如此多的元素以至于你无法将它们的数量放入 std::ptrdiff_t。然后,客户可以使用它来计算他们看到了多少东西,即使您的迭代器实际上并没有让人们计算条目之间的距离。

关于c++ - 当您无法测量差异时如何处理 iterator::difference_type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46695349/

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