ホームページ  >  記事  >  バックエンド開発  >  C は異なるタイプのデータを 1 つのコンテナに保存できますか?

C は異なるタイプのデータを 1 つのコンテナに保存できますか?

DDD
DDDオリジナル
2024-11-06 03:41:02229ブラウズ

Can C   Store Data of Different Types in a Single Container?

C の異種コンテナ

質問:

STL コンテナの分類図は、次のような STL コンテナが存在しないことを示しています。可変サイズと異種混合の両方。 C には、さまざまな型のデータを保存するためのソリューションがありませんか?

答え:

C コンテナは通常、単一型のオブジェクトを保持するように設計されていますが、次のような方法があります。さまざまな種類のデータを保存します:

  • ポインター: 共通の基本クラスのオブジェクトへのポインターのコンテナーを使用すると、さまざまな派生型のオブジェクトを保存できます。
  • boost::any: 任意のタイプのオブジェクトをコンテナーに保存します。これは、テンプレート メタプログラミング アプローチを使用して、さまざまな型を安全に処理します。
  • boost::variant: boost::any に似ていますが、コンパイル時に許可される型を指定する必要があります。

コード例:

<code class="cpp">#include <list>
#include <boost/any.hpp>

using boost::any_cast;
typedef std::list<boost::any> many;

int main() {
    many values;
    append_int(values, 10);
    append_string(values, "Hello");

    if (is_int(values.front())) {
        int number = any_cast<int>(values.front());
        std::cout << number << std::endl;
    }

    return 0;
}</code>

以上がC は異なるタイプのデータを 1 つのコンテナに保存できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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