ホームページ >バックエンド開発 >C++ >C でネストされたマップを効率的に反復するにはどうすればよいですか?

C でネストされたマップを効率的に反復するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-08 08:54:11453ブラウズ

How Can I Efficiently Iterate Through Nested Maps in C  ?

C での複数のマップの反復

C で複数レベルのネストされたマップをナビゲートするのは、気の遠くなるような作業になる場合があります。このガイドでは、マップ オブ マップと呼ばれるマップのコンテナをループするための包括的なソリューションを提供します。

このアプローチでは、C 11 で導入された強力な範囲ベースの for ループが利用されます。コードを詳しく見てみましょう。

std::map<std::string, std::map<std::string, std::string>> mymap;

for (auto const &ent1 : mymap) {
  for (auto const &ent2 : ent1.second) {
    std::cout << ent1.first << " " << ent2.first << " " << ent2.second << std::endl;
  }
}

外側のループでは、ent1 はキーと値のペアを保持します。ここで、ent1.first は第 1 レベルのキーを表します。内部ループは、別のマップである ent1.second の値を反復処理し、ent2 は第 2 レベルのマップのキーと値へのアクセスを提供します。

参照変数の明示的な定義を使用する場合は、次のようにします。では、outer_key、inner_key、inner_value などの一時変数を導入して、各変数の目的を明確にすることができます。

C 17 では構造化バインディングが導入され、簡潔なバインディングが提供されます。ネストされた要素にアクセスするための構文。次のコード スニペットは、この機能を示しています。

for (auto const &amp;[outer_key, inner_map] : mymap) {
  for (auto const &amp;[inner_key, inner_value] : inner_map) {
    std::cout << outer_key << " " << inner_key << " " << inner_value << std::endl;
  }
}

この例では、外側のキーと値は、内側のキーと値とともに、ループ本体内で直接アクセスできます。

Byこれらの手法を利用すると、C で複数レベルのネストされたマップを簡単に反復処理できます。コーディングを楽しんでください!

以上がC でネストされたマップを効率的に反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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