C の領域では、ベクトルは動的メモリ管理の強力なツールとして君臨します。ただし、ベクトル内に参照を格納すると、不可解なエラーが発生する可能性があります。
次のコード スニペットを考えてみましょう。
std::vector<int> hello;
このコードはシームレスにコンパイルされ、次のようなベクトルを作成できます。整数。しかし、代わりに参照を使用しようとするとどうなるでしょうか?
std::vector<int &> hello;
コンパイラはエラーを引き起こし、「参照へのポインタが不正です」と叫びます。この奇妙な動作は、 C の参照の基本的な性質に由来しています。参照は、一度初期化されると不変のままとなり、存続期間全体にわたってそれぞれの参照対象にバインドされます。参照に新しい値を割り当てることは厳密に禁止されています。
残念ながら、この不変性はベクトルのようなコンテナの性質そのものと矛盾します。コンテナでは、適切なメモリ管理と変更機能を確保するために、コンポーネントが割り当て可能である必要があります。参照にはこの割り当て機能がないため、ベクトル コンポーネントとして互換性がありません。
したがって、参照をベクトルに格納するための唯一の実行可能なオプションは、時間の経過とともに異なるオブジェクトを指すために必要な柔軟性を提供するポインターを使用することです。
以上がC ベクトルで参照を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。