C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++】std::mapを範囲ベースforループで反復処理する方法

この記事では、C++のstd::map型のオブジェクトに対して、範囲ベースforループ(range-based for loop)を使用する方法を解説します。

std::mapは、キーと値のペア(キーバリューペア)を格納できる連想コンテナです。内部ではpairオブジェクトとしてデータを保持しており、1つのキーとそれに対応する値がセットになって管理されます。キーと値の型はテンプレート引数で指定する仕組みのため、文字列や数値など、任意の型のデータを柔軟に扱えます。

範囲ベースforループを使えば、マップ内の各ペアを簡潔に反復処理することが可能です。以下のサンプルコードで、具体的な使い方を確認しましょう。

サンプルコード

#include<iostream>
#include<map>
using namespace std;

int main() {
    map<char, string> my_map;
    my_map.insert(pair<char, string>('A', "Apple"));
    my_map.insert(pair<char, string>('B', "Ball"));
    my_map.insert(pair<char, string>('C', "Cat"));
    my_map.insert(pair<char, string>('D', "Dog"));
    my_map.insert(pair<char, string>('E', "Eagle"));
    my_map.insert(pair<char, string>('F', "Flag"));
    my_map.insert(pair<char, string>('G', "Ghost"));
    my_map.insert(pair<char, string>('H', "Hill"));
    my_map.insert(pair<char, string>('I', "India"));
    my_map.insert(pair<char, string>('J', "Jug"));

    for(auto& key_val : my_map) {
        cout << "The " << key_val.first << " is pointing to: " << key_val.second << endl;
    }
    return 0;
}

実行結果

The A is pointing to: Apple
The B is pointing to: Ball
The C is pointing to: Cat
The D is pointing to: Dog
The E is pointing to: Eagle
The F is pointing to: Flag
The G is pointing to: Ghost
The H is pointing to: Hill
The I is pointing to: India
The J is pointing to: Jug

コードのポイント

範囲ベースforループでは、auto&を使って各要素への参照を受け取ります。std::mapの各要素はstd::pairであるため、key_val.firstでキーに、key_val.secondで値にアクセスできます。

なお、C++17以降では構造化束縛(structured bindings)を利用でき、for(auto& [key, value] : my_map)のように記述することで、キーと値をより直感的に取り出すことも可能です。用途に応じて使い分けると、コードの可読性がさらに向上します。

  1. 【保存版】Microsoft WordでGrammarlyを無料で使う方法|インストール手順を徹底解説

    オフィスワークにおいて、文法スキルは非常に重要です。文法が正確な文章は、読み手にとって理解しやすく、読みやすいコンテンツになります。しかし、作成するすべてのレポートや資料の文法を完璧に保つには時間がかかり、結果的に生産性を低下させる原因にもなりかねません。そんなときに活躍するのが、Grammarlyのような文法チェックツールです。もちろん、Grammarlyは人間の編集者ほど完璧ではありませんが、それにかなり近い精度を誇ります。スペルミス、動詞の一致、主語と述語の整合性、文の構成、句読点の誤りなどを自動でチェックでき、有料版にアップグレードすればさらに高度な機能も利用可能です。文章を書く機会が

  2. Rubyのmapメソッド完全ガイド!配列・ハッシュのデータ変換を実例で解説

    Rubyのmapメソッドは、配列(Array)・ハッシュ(Hash)・範囲(Range)といったコレクションに対して使用できる強力なメソッドです。 mapの主な用途は、データの変換です。 例えば、文字列の配列があった場合、すべての文字列を順番に処理して、各文字を大文字に変換することができます。 また、Userオブジェクトのリストがある場合も同様です。 それらを変換して、対応するメールアドレスや電話番号など、Userクラスに定義された任意の属性のリストを作成できます。 それでは、具体的な使い方を見ていきましょう! Ruby mapメソッドの基本構文 mapの構文は次のようになっています。 a