私が
std::vector<int> v
//and ...
for(int i =0;i<100;++i)
v.push_back(i);
ここで、ベクトルの 10 番目の要素を指すイテレータが必要です。
以下のアプローチを行わずに
std::vector<int>::iterator vi;
vi = v.begin();
for(int i = 0;i<10;i++)
++vi;
こうすると、ベクトルのランダム アクセス イテレータの利点が損なわれます。
ベストアンサー1
vector
これは、またはなどの任意のランダム アクセス イテレータで機能しますdeque
。
std::vector<int>::iterator iter = v.begin() + 10;
あらゆるタイプのイテレータで機能するソリューションが必要な場合は、次を使用しますnext
。
std::vector<int>::iterator iter = std::next(v.begin(), 10);
または、C++11 実装を使用していない場合は、次のようになりますadvance
。
std::vector<int>::iterator iter = v.begin();
std::advance(iter, 10);