1

我对迭代器和下标之间的偏好有疑问。例如,如果我正在做类似的事情:

for (vector<int>::size_type i = 0; i != ivec.size(); ++i) {
  ivec[i] related operation
}

for (vector<int>::iterator it = ivec.begin(); it != ivec.end(); ++it) {
  *it related operation
}

哪个是首选?从以下方面考虑: 1. 性能 2. 清晰 3. 其他问题?

我知道这个问题之前已经讨论过链接。但在另一篇文章中只谈到了 size(); 的性能成本;

假设这是关于向量的,并且 size() 的成本可以忽略不计。

使用下标与迭代器的成本如何?

谢谢。

4

1 回答 1

1

性能:在大多数情况下,使用向量这些情况是相等的,因为在大多数情况下vector<T>::iterator实际上是指向的指针T

清晰度:使用迭代器。

于 2013-03-01T05:51:13.357 回答