第71章 mapクラスと反復子


前章では反復子が表に出てきませんでした。今回はこれをプログラムの 表面に(?)出してみます。



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;
map<string, int>::iterator itr;

でitrはmapクラスの反復子となります。

itr = m.begin();

でitrはmapクラスの最初の要素を指します。

itr->first

で、最初のpairクラスのfirstメンバ(キー)となります。

itr->second

で最初のpairクラスのsecondメンバ(定価)となります。

あとは、反復子を1つずつ進めていけばよいですね。


[C++Index] [総合Index] [Previous Chapter] [Next Chapter]

Update Jun/02/2003 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。