質問

グローバルスコープにmyObjectsのベクトルがあります。 ジェネラコディセタグプレ

メソッドには、ベクトル内の要素の1つへのポインターが渡されます。 このメソッドは、次の要素に到達するためにポインタをインクリメントできますか? ジェネラコディセタグプレ

または、std::Vector<myObject>::iteratorを渡して、代わりにインクリメントする必要がありますか?

今のところ、ベクトルはその間変更されないと仮定します。

役に立ちましたか?

解決

はい-標準では、技術的な修正により、ベクターのストレージが連続していることが保証されているため、ベクターへのポインターのインクリメントが機能します。

他のヒント

はい、std::vectorは標準によって連続ストレージを使用することが義務付けられているため、これは期待どおりに機能します。さまざまなオブジェクトを操作している場合は、イテレータのペアを渡すことをお勧めします。これは、STLで採用されている標準的なイディオムです。これにより、カウントなどに依存するのではなく、反復の明示的なエンドポイントがあるため、コードも少し安全になります。

ベクトルが再割り当てされておらず、ベクトルの境界から外れないことが確実な場合は、このアプローチを使用できます。ポインタのインクリメントは合法であり、次の要素に移動するスペースがある場合は、ベクトルのバッファが単一のメモリブロックであるため、ポインタをインクリメントすることで移動できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top