ホームページ > バックエンド開発 > C++ > C ベクトルで参照を使用できないのはなぜですか?

C ベクトルで参照を使用できないのはなぜですか?

DDD
リリース: 2024-12-22 18:11:15
オリジナル
722 人が閲覧しました

Why Can't I Use References in a C   Vector?

ベクトル参照の謎

C の領域では、ベクトルは動的メモリ管理の強力なツールとして君臨します。ただし、ベクトル内に参照を格納すると、不可解なエラーが発生する可能性があります。

次のコード スニペットを考えてみましょう。

std::vector<int> hello;
ログイン後にコピー

このコードはシームレスにコンパイルされ、次のようなベクトルを作成できます。整数。しかし、代わりに参照を使用しようとするとどうなるでしょうか?

std::vector<int &> hello;
ログイン後にコピー

コンパイラはエラーを引き起こし、「参照へのポインタが不正です」と叫びます。この奇妙な動作は、 C の参照の基本的な性質に由来しています。参照は、一度初期化されると不変のままとなり、存続期間全体にわたってそれぞれの参照対象にバインドされます。参照に新しい値を割り当てることは厳密に禁止されています。

残念ながら、この不変性はベクトルのようなコンテナの性質そのものと矛盾します。コンテナでは、適切なメモリ管理と変更機能を確保するために、コンポーネントが割り当て可能である必要があります。参照にはこの割り当て機能がないため、ベクトル コンポーネントとして互換性がありません。

したがって、参照をベクトルに格納するための唯一の実行可能なオプションは、時間の経過とともに異なるオブジェクトを指すために必要な柔軟性を提供するポインターを使用することです。

以上がC ベクトルで参照を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート