イテレータは、コンテナーの選択に対して不変である汎用アルゴリズムを作成できるようにするために使用されます。これは素晴らしいことですが、コンテナのメンバー関数がコンテナ用に最適化されており、イテレータに依存する汎用コードよりも高速に実行されることがあるため、パフォーマンスが低下する可能性があることをSTL Bookで読みました。この場合、大きなベクトルを扱っている場合は、std::distance を呼び出しますが、定数は必要ありません。このアルゴリズムにベクトルのみを使用することがわかっている場合は、直接アクセス演算子 "[]" をサポートしていることに気づき、次のように記述します。
#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;
}
速度に関心がある場合は、ここで提案されているさまざまな回答をいつでも試して、実行時間を測定できます。おそらくベクトルサイズに依存します。