異種オブジェクトを C に保存する方法: Boost.any またはカスタム構造?

Linda Hamilton
リリース: 2024-10-27 08:28:03
オリジナル
780 人が閲覧しました

How to Store Heterogeneous Objects in C  : Boost.any or Custom Structures?

C での異種オブジェクトの保存

C では、異なる型のオブジェクトを 1 つのコンテナー内に保存するのが難しい場合があります。ただし、この問題に対処するにはいくつかのアプローチがあります。

1. Boost.any の活用

Boost ライブラリ、特に boost::any クラスの使用を検討してください。 Boost.any は、あらゆる種類のオブジェクトを保存するための安全かつ効率的な方法を提供します。 boost::any オブジェクトのベクトルまたはリストを作成し、それにさまざまなデータ型を設定できます。

2.カスタム構造体または共用体を作成する

または、独自の構造体または共用体を作成して、さまざまなタイプのオブジェクトを保持できます。潜在的な各データ型を表すメンバーを含む構造体または共用体を定義します。列挙またはインジケータを使用して、各オブジェクトのアクティブなタイプを指定します。ただし、共用体を使用する場合は制限が課せられ、誤って使用すると未定義の動作が発生する可能性があるため注意してください。

コード例

<code class="cpp">// Using a custom structure
struct MyContainer {
    int i;
    string s;
    double d;
    enum {INT, STRING, DOUBLE} type;
};

// Using boost::any
#include <boost/any.hpp>
vector<boost::any> myContainer;
myContainer.push_back(10);
myContainer.push_back("hello");
myContainer.push_back(3.14);</code>
ログイン後にコピー

その他の考慮事項

これらのメソッドは異種オブジェクトを格納するためのソリューションを提供しますが、そのような設計の目的を疑問視することが重要です。より効果的に問題に対処できる代替のデータ構造または設計パターンがあるかどうかを検討してください。

以上が異種オブジェクトを C に保存する方法: Boost.any またはカスタム構造?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!