【发布时间】:2016-06-29 07:20:12
【问题描述】:
这更像是一个概念上的疑问。我正在学习在 C++ 中使用向量。
在遍历向量时,我可以通过两种方式进行:
vector<int> temp;
for (int j = 0; j < 10; j++){
temp.push_back(j);
}
int sum1 = 0;
int sum2 = 0;
//Method 1: almost treating it like an array
for (int i = 0; i < temp.size(); i++){
sum1 = sum1 + temp[i];
}
//Method 2: using an iterator
vector<int>::iterator it;
for(it = temp.begin(); it < temp.end(); it++) {
sum2 = sum2 + *it;
}
这两种方法都运行良好并产生了预期的结果。但是,我注意到大多数建议的代码(在 stackexchange 等上)都使用迭代器。是否有任何具体原因,或者只是出于方便?
【问题讨论】:
-
让我补充一点,如果可以访问,迭代器通常比原始访问稍慢。