使用前向材料(而不是双向术语)在硬件级别上做什么

What does using a ForwardIterator, as opposed to a BidirectionalIterator, do at the hardware level?

本文关键字:硬件 什么 术语 材料      更新时间:2023-10-16

假设我有一个容器,我需要遍历其元素1-by-1。如果我知道我只需要在迭代器上使用++操作员,我应该使用ForwardIterator,但是如果我使用BidirectionalIterator,我会在性能方面损失什么?我不明白编译器如何限制您在特定范围内的迭代方向可以帮助您的程序更好。

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

只能增加前进迭代仪。双向迭代器支持向前迭代器所做的一切,并且可以减少。随机访问迭代器支持双向迭代器所做的一切,并且可以像指针一样支持算术操作。这里有一个漂亮的小图表,向您显示了所有不同的"类型"支持。

知道这些类型的支持使您可以将这些类型用作模板参数向最终用户表达您需要哪种类型的迭代器。如果一个函数要求随机访问迭代器,则不应给它一个前进迭代器,因为他们很有可能会在迭代器上进行操作,而前迭代器无法做到。相反,如果您具有期望向前迭代器的函数并将其传递给随机访问迭代器,那么您就可以了,因为随机访问迭代器支持所有向前迭代器操作。