前章では反復子が表に出てきませんでした。今回はこれをプログラムの
表面に(?)出してみます。
mapクラスのfindメンバ関数やbeginメンバ関数はオブジェクトの反復子を取得できます。
mapクラスの反復子はpairクラスのオブジェクトを指すことは前章ですでに解説しました。
今回も簡単なサンプルを作ってみます。
商品名と定価を入力して、入力が終わるとこれらを表示するというプログラムです。
// map04.cpp
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
    string nm;
    int teika, i, n;
    map<string, int> m;
    map<string, int>::iterator itr;
    while (1) {
        cout << "商品名(eで終了)--- ";
        cin >> nm;
        if (nm == "e")
            break;
        cout << "定価 ---";
        cin >> teika;
        m[nm] = teika;
    }
    itr = m.begin();
    n = (int)m.size();
    for (i = 0; i < n; i++) {
        cout << itr->first << "....." << itr->second << "円" << endl;
        itr++;
    }
    return 0;
}
map<string, int> m;でitrはmapクラスの反復子となります。
itr = m.begin();
でitrはmapクラスの最初の要素を指します。
itr->first
で、最初のpairクラスのfirstメンバ(キー)となります。
itr->second
で最初のpairクラスのsecondメンバ(定価)となります。
あとは、反復子を1つずつ進めていけばよいですね。
Update Jun/02/2003 By Y.Kumei