-1

他のオブジェクトを参照する VLA としてクラス メンバーがあります (つまり、他のオブジェクトへのポインターが含まれています)。VLA の内容が終わったら、空にしたいと思います。その長さをゼロに設定するのは十分ですか、それともその前に個々の要素を NULL に設定する必要がありますか、それとも両方を行う必要がありますか?

4

3 に答える 3

1

C++ には、略語VLAの使用によって示される意味での可変長配列がありません(C99 のように)。

したがって、コード内の特定の VLA をどうするかについての質問は、特定の C++言語拡張機能には意味があるかもしれませんが、標準の C++ には意味がありません。

いくつかのソース コード、C++ 言語拡張に関する情報、または問題の具体的な説明などは、単にいくつかの誤解を修正するのではなく、より問題指向の回答を提供するのに役立つ可能性があります。


std::vector使用しているものの代わりにa を使用することで、十分に機能することは合理的な推測です。

ただし、あなたの質問が実際には一部の C++ 言語拡張機能の VLA に関するものであることも合理的な推測です。その場合、使用するアドバイスはstd::vectorよくない可能性があります。

良いアドバイスを決定するための情報はありません。

于 2012-11-23T07:13:45.373 に答える
1

注: VLA は C99 標準の一部であり、gcc で許可されていても C++ の一部ではありません。

そうは言っても、アレイが作成されると、それをクリアすることはできません。配列 (通常の配列または VLA) のスペースは、ブロックの終わり (関数内) またはプログラムの終わり (名前空間レベル) まで予約されます。

サイズ変更可能な配列が必要な場合は、動的配列を使用する必要があります。標準ライブラリstd::vectorがこの使用法を提供していることがわかります。

于 2012-11-23T07:15:41.483 に答える
0

を使用std::vectorしてから実行しますmy_vector.clear();

于 2012-11-23T07:13:13.000 に答える