C での異種コンテナ
STL コンテナ分類では、可変サイズと異種 (異なるタイプのデータ) などのいくつかの要件が満たされていません。 。 C がこのユースケースに対して何らかのソリューションを提供しているかどうかを尋ねるのは合理的です。
通常、C コンテナは単一の型のオブジェクトを保持するように設計されていますが、ポインターまたは boost::any を利用して異なる型に対応できます。
🎜>ポインターの使用:
基本型へのポインターのコンテナーを格納して、その型から派生したオブジェクトを保持できるようにします:<code class="cpp">std::vector<MyBaseType*>;</code>
boost::any の使用:
Boost は boost::any を提供します。これにより、任意の型のオブジェクトを安全に保存できます。<code class="cpp">using boost::any_cast; typedef std::list<boost::any> many;</code>その後、次のように使用できます。 any_cast を使用して、オブジェクトを目的の型にキャストします。
boost::variant:
Boost::variant を使用すると、許可される一連のオブジェクトを指定できます。 type:<code class="cpp">std::vector<boost::variant<unsigned, std::string>>;</code>ただし、boost::any と boost::variant には、標準 STL コンテナと比較してパフォーマンスとメモリのオーバーヘッドがあることに注意することが重要です。
以上がC コンテナはさまざまな種類のデータを保存できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。