我对迭代器和下标之间的偏好有疑问。例如,如果我正在做类似的事情:
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.其他问题?
我知道此问题之前已经讨论过link。但在另一篇文章中,它只讨论了size()的性能成本;
假设这是关于向量的,并且size()的成本可以忽略不计。
使用下标与迭代器的成本如何?
感谢。
答案 0 :(得分:1)
性能:在大多数情况下,使用向量这些情况是相同的,因为在大多数情况下vector<T>::iterator
实际上是指向T
的指针。
清晰度:使用迭代器。