0

ベクトルの配列がある場合、配列の連続ストレージの性質により、ベクトルのサイズ変更機能は制限されますか?

4

3 に答える 3

2

はい、しかしあなたが考えている方法ではありません。

ベクトルは、その内容のために連続したアドレス空間を見つける必要があります。メモリの断片化により、最大の連続ブロックが空きメモリの合計よりも小さくなる場合があります。また、多くのベクトルを持つと、断片化が発生しやすくなります。

于 2012-06-13T01:37:23.823 に答える
1

いいえ; 内部的には、ベクトルはブロック自体ではなく、メモリ ブロックへのポインターを保持します。

于 2012-06-13T01:34:47.527 に答える
0

resize配列のメモリにはまったく影響しません。ベクトルには実際のストレージへのポインタがあるため、サイズ変更は配列とは関係のない他のメモリに影響します。配列にあるのは基本的に、異なる長さのメモリブロックを指しているポインタだけです。

さらに、次のようなものがある場合:

std::vector<int> arr [5];

配列のメモリはスタック上にあり、ベクトルのメモリはヒープ上にあります。全く違います!

于 2012-06-13T01:34:41.370 に答える