小编dim*_*imm的帖子

C++ std :: vector <> :: iterator不是指针,为什么?

只需一点介绍,简单的单词.在C++中,迭代器是"事物",你可以在其上至少编写解引用运算符*it,增量运算符++it,对于更高级的双向迭代器,减量--it,最后但并非最不重要的是,对于随机访问迭代器,我们需要运算符索引it[]和可能的加法和减法.

C++中的这类"东西"是具有相应运算符重载的类型的对象,或简单和简单的指针.

std::vector<>是一个包装连续数组的容器类,因此指针作为迭代器是有意义的.在网上,在一些文献中你可以找到vector.begin()用作指针.

使用指针的基本原理是开销更少,性能更高,特别是如果优化编译器检测到迭代并执行其操作(向量指令和内容).使用迭代器可能更难以使编译器进行优化.

知道这一点,我的问题是为什么现代STL实现,比如Mingw 4.7中的MSVC++ 2013或libstdc ++,为矢量迭代器使用了一个特殊的类?

c++ iterator vector stdvector

21
推荐指数
3
解决办法
3348
查看次数

标签 统计

c++ ×1

iterator ×1

stdvector ×1

vector ×1