【C++】連想配列(ハッシュ)のfor文

未分類

連想配列の要素をfor文で舐めるコードを忘れていつも検索してしまいます. そのための備忘録です。
C++で連想配列を利用するには, mapというものを利用します.

 

やりたいこと
連想配列の要素を全て, keyとvalueを共に出力したい.
(下記のような入力で果物の名前とその値段を保持しておきたい.)

入力

5
banana 100
orange 250
grape 300
apple 150
lemon 450

結論
下記の通り.

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    map<string, int> mp; // 宣言. この例では, keyに文字列, valueに整数が入る.
    for (int i = 0; i < n; i++) { string x; int y; cin >> x >> y;  // 連想配列に格納する前にxとyを受け取る.
        mp[x] = y;     // 連想配列に格納.
    }

    for (auto e: mp) { // auto で型を勝手に推論してくれる. 
        cout << e.first << ":" << e.second << endl; // 出力 ex) banana:100 などのように出力される.
    }
 
    return 0;
}

軽く解説
eの部分にはkeyとvalueが含まれた情報が入ってる. keyを取り出すにはfirstをvalueを取り出すにはsecondを利用する.

コメント