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