ホームページ >バックエンド開発 >C++ >C 11 以降で範囲ベースの for ループを使用して std::map を反復するにはどうすればよいですか?

C 11 以降で範囲ベースの for ループを使用して std::map を反復するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-27 17:34:31411ブラウズ

How do I iterate through a std::map using range-based for loops in C  11 and later?

std::map を使用した範囲ベースの for() ループ

C 11 以降のバージョンでは、範囲ベースの for() ループコンテナを反復処理する便利な方法を提供します。ベクトルのような単純なコンテナを反復処理する場合、各要素はループ変数として簡単にアクセスできます。ただし、マップなどの複雑なコンテナの場合、ループ変数の型を理解することが重要になります。

次のコード スニペットを考えてみましょう。

<code class="cpp">std::map<foo, bar> testing = { /*...blah...*/ };
for (auto abc : testing)
{
    std::cout << abc << std::endl;
    std::cout << abc->first << std::endl;
}</code>

このシナリオでは、各要素は std です。 :map::value_type、これは本質的に std::pair です。これは次のことを意味します:

C 17 以降の場合:

<code class="cpp">for (auto& [key, value] : myMap) {
    std::cout << key << " has value " << value << std::endl;
}</code>

C 11 および C 14 の場合:

<code class="cpp">for (const auto& kv : myMap) {
    std::cout << kv.first << " has value " << kv.second << std::endl;
}</code>

また、値を読み取り専用で表示するには、kv を const としてマークすることもできます。

以上がC 11 以降で範囲ベースの for ループを使用して std::map を反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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