データ構造の領域では、固定サイズと可変サイズ、異種データと同種データ、ソートされたデータとソートされていないデータ、シーケンシャル アクセスとランダム アクセス。これらのプロパティの特定の組み合わせに対応するためにさまざまな STL コンテナーが存在しますが、可変サイズと異質性を同時にサポートするコンテナーが存在しないという顕著なギャップが残っています。
C では、コンテナーは通常、単一タイプのオブジェクトを保持します。テンプレートの力を借りましょう。異なる型が共通の基本クラスを共有する場合、基本クラスへのポインターのコンテナーを使用できます。しかし、まったく関係のない型を管理する場合、どのようなオプションが利用できるのでしょうか?
この課題に対処するために、boost は 2 つの汎用ライブラリ、boost::any と boost::variant を提供します。
boost::any を使用すると、可変サイズをサポートする異種コンテナを簡単に作成できます:
<code class="cpp">std::list<boost::any> values; append_int(values, 42); append_string(values, "Hello");</code>boost::variant は型安全性を確保しますが、保存できる型を制限します。
<code class="cpp">std::vector<boost::variant<unsigned, std::string>> vec; vec.push_back(44); vec.push_back("str"); vec.push_back(SomeOtherType(55, 65)); // Compilation error</code>これらのライブラリにより、C 開発者は異種混合を処理できるようになります。多用途かつ効率的な方法でデータを収集し、可変サイズおよび異種コンテナ用の STL に存在する空白を埋めます。
以上がC は可変サイズのコンテナー内の異種データをどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。