gpt4 book ai didi

c++ - 在硬件级别使用 ForwardIterator 与 BidirectionalIterator 相比有何作用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:28 27 4
gpt4 key购买 nike

假设我有一个容器,我需要逐一移动它的元素。如果我知道我只需要在迭代器上使用 ++ 运算符,我应该使用 ForwardIterator,但是如果我使用 在性能方面会有什么损失code>BidirectionalIterator 代替?我不明白如何告诉编译器您将迭代器的方向限制在某个范围内可以帮助它使您的程序更好。

最佳答案

迭代器的类型描述了您可以对其使用的操作。迭代器本身只是一个概念,用于描述用于与标准容器交互的类型指针。

前向迭代器只能递增。双向迭代器支持前向迭代器所做的一切,并且可以递减。随机访问迭代器支持双向迭代器所做的一切,它可以像指针一样支持算术运算。有一张漂亮的小图表 here这向您展示了不同“类型”支持的一切。

了解这些类型支持的内容后,您就可以将这些类型用作模板参数,向最终用户表达您的函数需要哪种类型的迭代器。如果一个函数调用一个随机访问迭代器,你不应该给它一个前向迭代器,因为它们很可能在迭代器上做前向迭代器不能做的操作。相反,如果您有一个需要前向迭代器的函数,并且您向它传递了一个随机访问迭代器,那么您就没问题,因为随机访问迭代器支持所有前向迭代器操作。

关于c++ - 在硬件级别使用 ForwardIterator 与 BidirectionalIterator 相比有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30190036/

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