ホームページ >バックエンド開発 >C++ >どの C 11 標準ライブラリ コンテナを選択すればよいですか?

どの C 11 標準ライブラリ コンテナを選択すればよいですか?

DDD
DDDオリジナル
2024-12-15 01:18:13760ブラウズ

Which C  11 Standard Library Container Should I Choose?

C 11 標準ライブラリ コンテナの選択: 総合ガイド

C 11 での適切なコンテナの選択は、効率的なデータ管理にとって重要です。有名な「C コンテナの選択」チートシートとは異なり、C 11 バージョンはまだ作成されていません。

ただし、このようなチャートの作成は、セマンティクスの優先順位付けと、セマンティクスの選択という 2 つの原則に従うことで簡素化できます。複数のオプションが存在する場合の最も単純な解決策。パフォーマンスに関する考慮事項は、大規模なデータセットを処理する場合にのみ対処する必要があります。

連想シーケンスと単純シーケンス

コンテナは、主に 2 つのタイプ (連想シーケンスと単純シーケンス) に分類されます。

連想コンテナ

次の目的で連想コンテナを使用します。

  • 単一キーによる簡単検索
  • 並べ替えられた要素 (順序付けされた連想コンテナ)

簡単なシーケンスコンテナ

次の場合に単純なシーケンス コンテナを使用します。

  • 要素の順序は無関係です
  • メモリの安定性 (固定メモリ位置) が必要

段階的な選択プロセス

関連コンテナの場合

  • 注文済みですか?

    • はい: std::map または std::set を使用します (キーと値に基づいて)分離)
    • いいえ: std::unowned_map または std::unowned_set を使用します
  • 重複?

    • はい: std::multimap を使用するか、 std::multiset
    • いいえ: 単純なシーケンス コンテナの場合は std::map または std::set

を使用します

  • メモリ安定していますか?

    • はい: std::list を使用します
  • 動的サイズ?

    • コンパイル時に既知のサイズ?: 使用しますstd::array
    • サイズが不明ですか?: 続行
  • 両端がありますか?

    • はい: std::deque
    • を使用します いいえ: 使用しますstd::vector

デフォルトの選択

連想的または特定の要件が存在しない限り、ほとんどの場合、std::vector が好ましい選択 (Sutter と Stroustrup によって推奨されている)。

以上がどの C 11 標準ライブラリ コンテナを選択すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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