C の異種コンテナ
参照した図は、固定/可変サイズ、データ型、並べ替えなどの特性に基づいてさまざまな STL コンテナを示しています、アクセスタイプ。ただし、可変サイズと異質性 (さまざまなデータ型に対応) を同時にサポートするコンテナーがありません。
C では、ほとんどのコンテナーは、テンプレートを使用して特定の型のオブジェクトを保持するように設計されています。ポインターは異種ストレージを可能にしますが、制限が生じます。さらに、void* コンテナは型安全性が低くなります。
無関係な型を格納できる真の異種コンテナの場合は、次のオプションを検討してください:
Boost.Any :
Boost.Any は、任意の型を格納するための一般的な方法を提供し、整数、文字列、さらに複雑なオブジェクトの組み合わせを保持するコンテナーを作成できます。
<code class="cpp">using boost::any; std::list<boost::any> values; values.push_back(42); values.push_back("Hello, world!");</code>
Boost.Variant:
Boost.Variant は Boost.Any に似ていますが、コンパイル時に許可される型を指定する必要があります。これにより、異種ストレージを有効にしながら、タイプ セーフが強制されます。
<code class="cpp">using boost::variant; std::vector<boost::variant<int, std::string>> vec; vec.push_back(44); vec.push_back("C++");</code>
これらのライブラリを使用すると、さまざまなタイプのデータを柔軟に保存してアクセスできるコンテナを作成できます。 STL によって直接提供されるわけではありませんが、これらの代替手段は、C での異種データ ストレージのソリューションを提供します。
以上がC で異種コンテナを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。