ホームページ  >  記事  >  バックエンド開発  >  STL ベクトル メモリはサイズ変更後も連続していますか?

STL ベクトル メモリはサイズ変更後も連続していますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-18 04:47:02693ブラウズ

Is STL Vector Memory Contiguous After Resizing?

STL ベクトルの連続ストレージの仮定

変更された STL ベクトルの要素がメモリ内に連続して格納されると仮定できますか?

質問:

サイズ変更された STL ベクトル vc が与えられた場合、最初の要素のアドレス (&vc[0]) が、ベクトル全体が占有しているメモリの連続ブロックですか?

答え:

はい、ただし注意点があります。

によるとC 03 標準 (23.2.4.1) では、STL ベクトル内の要素は連続して格納されます。これは、要素タイプ T (bool 以外) を持つ任意のベクトル v について、0 から v.size() - 1 までの n のすべての値について &vc[0] n が &vc[n] と等しいことを意味します。

注意:

この仮定は一般的に当てはまりますが、ベクトルに要素を追加するときに発生する可能性のあるメモリの再割り当てに注意することが重要です。ベクトルの容量を超えると、ベクトルのデータが新しいメモリ ブロックに移動され、既存のポインタまたはイテレータが無効になる場合があります。したがって、この連続ストレージの前提に依存する場合は、再割り当ての可能性を考慮することが重要です。

以上がSTL ベクトル メモリはサイズ変更後も連続していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。