使用前向材料(而不是双向术语)在硬件级别上做什么
What does using a ForwardIterator, as opposed to a BidirectionalIterator, do at the hardware level?
假设我有一个容器,我需要遍历其元素1-by-1。如果我知道我只需要在迭代器上使用++
操作员,我应该使用ForwardIterator
,但是如果我使用BidirectionalIterator
,我会在性能方面损失什么?我不明白编译器如何限制您在特定范围内的迭代方向可以帮助您的程序更好。
迭代器的类型描述了您可以在其上使用的操作。迭代器本身只是描述用于与标准容器交互的类型指针的概念。
只能增加前进迭代仪。双向迭代器支持向前迭代器所做的一切,并且可以减少。随机访问迭代器支持双向迭代器所做的一切,并且可以像指针一样支持算术操作。这里有一个漂亮的小图表,向您显示了所有不同的"类型"支持。
知道这些类型的支持使您可以将这些类型用作模板参数向最终用户表达您需要哪种类型的迭代器。如果一个函数要求随机访问迭代器,则不应给它一个前进迭代器,因为他们很有可能会在迭代器上进行操作,而前迭代器无法做到。相反,如果您具有期望向前迭代器的函数并将其传递给随机访问迭代器,那么您就可以了,因为随机访问迭代器支持所有向前迭代器操作。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- 使用前向材料(而不是双向术语)在硬件级别上做什么
- 任何地方都可以测试arduino在没有硬件的情况下能做什么
- 测试操作系统性能时,硬件开销和软件开销有什么区别
- 当我访问数组的元素时,在硬件级别会发生什么
- 查找硬件中正在使用的中断驱动程序的命令是什么?
- 将变量作为指针、引用、常量引用等传递:硬件级别会发生什么
- 填充硬件输入结构以与 SendInput 一起使用的正确方法是什么
- 我需要什么硬件/软件移植我的c++ /wxWidgets应用程序到MAC