ベクトルに格納されているオブジェクトへのポインタの使用…c ++
質問
グローバルスコープにmyObjectsのベクトルがあります。 ジェネラコディセタグプレ
メソッドには、ベクトル内の要素の1つへのポインターが渡されます。 このメソッドは、次の要素に到達するためにポインタをインクリメントできますか? ジェネラコディセタグプレ
または、std::Vector<myObject>::iterator
を渡して、代わりにインクリメントする必要がありますか?
今のところ、ベクトルはその間変更されないと仮定します。
解決
はい-標準では、技術的な修正により、ベクターのストレージが連続していることが保証されているため、ベクターへのポインターのインクリメントが機能します。
他のヒント
はい、std::vector
は標準によって連続ストレージを使用することが義務付けられているため、これは期待どおりに機能します。さまざまなオブジェクトを操作している場合は、イテレータのペアを渡すことをお勧めします。これは、STLで採用されている標準的なイディオムです。これにより、カウントなどに依存するのではなく、反復の明示的なエンドポイントがあるため、コードも少し安全になります。
ベクトルが再割り当てされておらず、ベクトルの境界から外れないことが確実な場合は、このアプローチを使用できます。ポインタのインクリメントは合法であり、次の要素に移動するスペースがある場合は、ベクトルのバッファが単一のメモリブロックであるため、ポインタをインクリメントすることで移動できます。
所属していません StackOverflow