-3

vectorベクトルを定義する必要のあるコードがあります。ループ広告でそれらを使用し、毎回データを入力します。スニペットは次のようになります。

vector < vector<T> > buckets;

for ( i = 0 -> N) {
  buckets.clear();
  ....
}

私の質問は、で.clear()操作を実行した後でもbucket、次の反復で古い値が存在することを確認しますが、これは通常ですか?

前もって感謝します!

4

1 に答える 1

2

clear「使用されたエントリの数をゼロに設定する」[1]だけなので、古いエントリは引き続きベクターで読み取れる可能性があります。新しいサイズを取得するために使用しないsize()が、他の方法を使用する場合、値はまだそこにあります。

clear実際にコンテンツが完全に削除され、アクセスできなくなる可能性もあります。この場合、コンテンツの一部を使用しようとすると、プログラムがクラッシュします。

[1]はい、詳細が必要な場合は、これよりも「多く」のことを行います。単純化しています。たとえば、デストラクタをベクトル内の要素と呼びますが、それでも「ものはまだそこにある」場合であり、有効とは見なされなくなります。

于 2013-03-06T20:37:13.670 に答える