使用迭代器和索引访问向量元素有什么区别?

Bab*_*ker 13 c++ iterator vector

使用迭代器和索引访问向量元素有什么好处?

nha*_*123 8

为什么迭代器比索引更好?

  • 在索引不可用的情况下(例如,使用std :: list).
  • 在调用接受迭代器的泛型函数的情况下.
  • 编写应该使用多种容器类型的函数模板时.
  • 它们的存在是为了在所有容器之间创建一致性,并且能够使用所有容器的迭代器以及所有标准算法中的常规指针.
  • 迭代器可以指向除了作为概念之外不存在的序列.例如,您可以创建一个迭代器类,该类遍历素数而不必实际构建素数容器.

但是,如果忽略不支持随机访问(列表,集等)的容器类型,迭代器仍然提供

  • 像语义一样的指针(想想string :: iterator与char*).
  • 广义概念可用于迭代超过容器内的元素.
  • 在少数情况下,性能优于容器成员功能.

  • 我同意,特别是我把重点放在一个非常实用的优点上:使用迭代器循环遍历vector的元素对于逐个情况是错误安全的.更简单地说,使用向量的迭代器在某种程度上与大小无关. (3认同)