vector<float>
のメンバーを持つC++クラスをコンストラクタの引数の1つで指定されたサイズにコンストラクタで初期化します。C++のベクトル初期化の成功/失敗をテストする方法
summingBuffer = vector<float>(requiredSize);
ベクターコンストラクタが必要なスペースを割り当てたかどうかを確認するにはどうすればよいですか?インスタンス変数はポインタではありません(そうでなければなりません)。if (NULL==myVector)
は機能しません。 vector
は割り当てエラーで例外をスローしますか?後で.size()
をチェックするのはどうですか?
は、それが十分なストレージを割り当てることができませんでした場合は、ベクトルのコンストラクタは、余分なチェックの必要性を全くbad_alloc
を上げていないだろう...
ヘルプとコードスニペットありがとう。この例では、bad_alloc例外は、fooのコンストラクタを呼び出すクライアントコードの行にバブルするでしょうか?また、STLがそのコンストラクタでエラーを処理しなかったというこのFAQの質問の最後の文章で、私は信じるようになりました:http://yosefk.com/c++fqa/ctors.html#fqa-10.17まともなリファレンスをオンラインで見つける。あなたは何か知っていますか? –
'bad_alloc'は、それが捕捉されるまで伝播します(またはあなたのプログラムが死んでしまう)。あなたはFQAでその行を誤読しています。 STLは、コンストラクタで発生した例外をSTLが処理しないということではなく、例外を使用してコンストラクタのエラーを処理しないと言います。 (そして、一般的には、FQAで読んだ情報には注意してください。間違っているとは言わないが、非常に賛成です。) – Mat
cool。それに感謝します。 –