ベクトルの特定の位置にイテレータを取得する方法 質問する

ベクトルの特定の位置にイテレータを取得する方法 質問する

私が

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);

おすすめ記事