閱讀以下說(shuō)明和C++代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
C++標(biāo)準(zhǔn)模板庫(kù)中提供了map模板類,該模板類可以表示多個(gè)“鍵-值”對(duì)的集合,其中鍵的作用與普通數(shù)組中的索引相當(dāng),而值用作待存儲(chǔ)和檢索的數(shù)據(jù)。此外,C++模板庫(kù)還提供了pair模板類,該類可以表示一個(gè)“鍵-值”對(duì)。pair對(duì)象包含兩個(gè)屬性:first和second,其中first表示“鍵-值”中的“鍵” ,而second表示“鍵-值”中的“值”。
map 類提供了 insert 方法和 find 方法,用于插入和查找信息。應(yīng)用時(shí),將一個(gè) pair對(duì)象插入(insert)到 map 對(duì)象后,根據(jù)“鍵”在 map 對(duì)象中進(jìn)行查找(find),即可獲得一個(gè)指向pair對(duì)象的迭代器。
下面的 C++代碼中使用了 map和 pair 模板類,將編號(hào)為 1001、1002、1003 的員工信息插入到map對(duì)象中,然后輸入一個(gè)指定的員工編號(hào),通過(guò)員工編號(hào)來(lái)獲取員工的基本信息。員工編號(hào)為整型編碼,員工的基本信息定義為類employee。
map對(duì)象與員工對(duì)象之間的關(guān)系及存儲(chǔ)結(jié)構(gòu)如圖5-1所示。
【C++代碼】
#include <iostream>
#include <map>
#include <string>
using namespace std ;
class employee{
(1) :
employee(string name,string phoneNumber, string address){
this->name = name;
this->phoneNumber = phoneNumber;
this->address = address;
}
string name;
string phoneNumber;
string address;
};
int main( )
{
map <int, employee*> employeeMap;
typedef pair <int, employee*> employeePair;
for (int employIndex = 1001; employIndex <= 1003; employIndex++){
char temp[10] ; //臨時(shí)存儲(chǔ)空間
_itoa(employIndex,temp,10); //將employIndex轉(zhuǎn)化為字符串存儲(chǔ)在temp中
string tmp( (2) ); //通過(guò)temp構(gòu)造string對(duì)象
employeeMap. (3) ( employeePair ( employIndex,
new employee("employee-" + tmp,
"85523927-"+tmp,
"address-"+tmp)
)
); //將員工編號(hào)和員工信息插入到employeeMap對(duì)象中
}
int employeeNo = 0;
cout << "請(qǐng)輸入員工編號(hào):";
(4) >> employeeNo; //從標(biāo)準(zhǔn)輸入獲得員工編號(hào)
map<int,employee*>::const_iterator it;
it = (5) .find(employeeNo); //根據(jù)員工編號(hào)查找員工信息
if (it == employeeMap.end()) {
cout << "該員工編號(hào)不存在 !" << endl;
return -1;
}
cout << "你所查詢的員工編號(hào)為:" << it->first << endl;
cout << "該員工姓名:" << it->second->name << endl;
cout << "該員工電話:" << it->second->phoneNumber << endl;
cout << "該員工地址:" << it->second->address << endl;
return 0;
}