迭代器用于允许编写对容器选择不变的通用算法。我在STL Book中读到这很棒,但可能会导致性能下降,因为有时容器的成员函数针对容器进行了优化,并且比依赖迭代器的通用代码运行得更快。在这种情况下,如果您正在处理一个大向量,您将调用 std::distance,虽然常量不是必需的。如果你知道你将在这个算法中使用 oly 向量,你可能会认识到它支持直接访问运算符“[]”并编写如下内容:
#include <vector>
#include <iostream>
using namespace std;
int main ()
{
vector<int> myV;
for (int I = 0; I < 100; ++I)
{
myV.push_back(I);
}
for (int I = 0; I < myV.size(); ++I)
{
cout << "current value is: " << myV[I]
<< ", and current position is: " << I << endl;
}
return 0;
}
如果您对速度感兴趣,您可以随时尝试此处提出的不同答案并测量执行时间。这可能取决于矢量大小。