ホームページ >バックエンド開発 >C++ >C コンテナはさまざまな種類のデータを保存できますか?

C コンテナはさまざまな種類のデータを保存できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-05 06:34:01973ブラウズ

Can C   Containers Store Data of Different Types?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。