他の変数のような値で C++ を初期化することは可能std::queue
ですか?NULL
このような:
HANDLE variable = NULL;
class Test
{
}
すなわち
std::queue<Test*> testQueue = NULL;
また
testQueue.empty();
またはそのようなもの?
他の変数のような値で C++ を初期化することは可能std::queue
ですか?NULL
このような:
HANDLE variable = NULL;
class Test
{
}
すなわち
std::queue<Test*> testQueue = NULL;
また
testQueue.empty();
またはそのようなもの?
これを書くと:
std::queue<Test*> testQueue; //it is default initialized
それで十分です。ポインターにして NULL で初期化する必要はありません。
また、これを行うことができます:
if ( testQueue.empty())
{
//testQueue is empty
}
キューへのポインターを使用する場合は、確実にそれをヌル ポインターに初期化できます (ただし、可能であればそれを避けたいと思うでしょう)。
単純にキューを定義すると、それが空かどうかをテストできます (提案したように.empty()
)。
質問に直接答えるには、null ポインターで初期化しません。デフォルトでは、キューは空であり、それをテストします(他の回答で示唆されているように)。しかし、ここには、それよりも少し深い根本的な問題があると思います。それは、ポインターの観点から考えすぎていることです。
コンテナを使用しているため、std::queue<Object *>
. 代わりに、std::queue<Object>
可能な場合は a を使用することをお勧めします (ポインターではなくオブジェクトを保存します)。オブジェクトが有効な状態にないことを示す null 値を使用するのではなく、コンストラクターで値を初期化するだけで (すべてのオブジェクトが有効な状態になります)、その後、すべてのオブジェクトstd::queue
が有効になります。C++ では、オブジェクトの使用方法は次のように設定する必要があります。
1
)new
ます)。これらは慎重に使用し、オブジェクトの作成が機能しないことを確認した場合にのみ使用する必要があります1
。1
。コンテナーに何を格納するかを決定するときは、上記にも従う必要があります (最初にオブジェクトのコレクション、次に参照、次にスマート ポインター、最後に生のポインターを優先します)。
ポインターは、ほとんどの変数がヒープ上 (または C++ の用語ではフリー ストアから) に作成される Java では一般的であり、STL、参照、およびスマート ポインターが存在しない C ではやや一般的です。しかし、それらは現代の C++ ではあまり使われません。
キューは、コンストラクタを持つ C++ オブジェクトです。デフォルト値に初期化する必要はありません。常に空のキューとして開始されます。.empty()
空かどうかをチェックするだけです。.clear()
必要に応じてその内容を削除しますが、新しく構築されたものでは、これは必要ありません。