C++ 当我可以使用双向迭代器或随机访问迭代器实现相同的功能时,为什么要使用ForwardIterator

C++ 当我可以使用双向迭代器或随机访问迭代器实现相同的功能时,为什么要使用ForwardIterator,c++,c++11,C++,C++11,与双向迭代器或随机访问迭代器相比,使用ForwardIterator的性能优势是什么?更严格的迭代器类别通常不会带来性能优势,正如您通常使用的术语一样。相反,它允许访问存储在以其他方式无法访问的结构中的数据 具体来看前向迭代器,它可以用于访问存储在单链表中的数据的一个示例,其中双向迭代器通常需要双链表 与双链表相比,使用单链表可以带来性能优势—每个节点只需要一个指针,而不是两个指针。由于每个节点的指针更少,您通常可以在缓存中存储更多节点,这可以通过减少对主内存的引用来显著提高性能。您的问题没有意

与双向迭代器或随机访问迭代器相比,使用ForwardIterator的性能优势是什么?

更严格的迭代器类别通常不会带来性能优势,正如您通常使用的术语一样。相反,它允许访问存储在以其他方式无法访问的结构中的数据

具体来看前向迭代器,它可以用于访问存储在单链表中的数据的一个示例,其中双向迭代器通常需要双链表


与双链表相比,使用单链表可以带来性能优势—每个节点只需要一个指针,而不是两个指针。由于每个节点的指针更少,您通常可以在缓存中存储更多节点,这可以通过减少对主内存的引用来显著提高性能。

您的问题没有意义。谁是这个场景中的你?您是在设计容器还是迭代器?您正在编写一个使用迭代器的算法吗?是什么让你认为ForwardIterator与性能有任何关系,或者至少,以你的意思来说?没有任何关系-每个Bidi迭代器都是前向迭代器,每个随机访问迭代器都是Bidi迭代器。因此,严格来说,你可以用更有力的保证做更多的事情。通常当某个东西是正向迭代器时,这是因为这是最好的迭代器。你的问题反过来了。相反,你应该问问自己:当我只需要向前迭代时,为什么我要使用双向迭代器。。。答案是:你没有