web-dev-qa-db-ja.com

C ++ STL Vector:インデックスからイテレータを取得しますか?

そのため、index []によってstlベクトル内の要素にアクセスする一連のコードを作成しましたが、今はベクトルのチャンクのみをコピーする必要があります。 vector.insert(pos, first, last)が欲しい関数のように見えます... intとして最初と最後しか持っていないことを除いて。これらの値のイテレータを取得する良い方法はありますか?

189
mpen

これを試して:

vector<Type>::iterator nth = v.begin() + index;
269
dirkgently

@dirkgently ( v.begin() + index )で言及されている方法

しかし、 std::advance( v.begin(), index )最も一般的な方法で、ランダムアクセスのイテレータは一定の時間でも動作します。

編集
使用方法の違い:

std::vector<>::iterator it = ( v.begin() + index );

または

std::vector<>::iterator it = v.begin();
std::advance( it, index );

@litbノートの後に追加。

82
bayda

また、 auto it = std::next(v.begin(), index);

更新:C++ 11x準拠のコンパイラが必要

45
Viktor Sehr

または、 std::advance を使用できます

vector<int>::iterator i = L.begin();
advance(i, 2);
8
TimW