題目:定義一個map對象,其元素的鍵是家族姓氏,而值是存儲該家族孩子名字的vector對象。為這個map容器輸入至少六個條目。通過基於家族姓氏的查詢檢測你的程序,查詢應輸出該家族所有孩子的名字。
//定義一個map對象,其元素的鍵是家族姓氏 //而值則是存儲該家族孩子名字的vector對象 //進行基於家族姓氏的查詢,輸出該家族所有孩子的名字 #include<iostream> #include<map> #include<vector> #include<string> using namespace std; int main() { map<string , vector<string> > children; string surname , childName; //讀入條目(家族姓氏及其所有孩子的名字) do{ cout<<"Enter surname: "<<endl; cin>>surname; if(!cin) //讀入結束 break; //插入新條目 vector<string> chd; pair<map<string , vector<string> >::iterator , bool> ret = children.insert(make_pair(surname , chd)); if(!ret.second){//該家族姓氏已在map容器中存在 cout<<"repeated surname: "<<surname<<endl; continue; } cout<<"Enter children's name: "<<endl; while(cin>>childName)//讀入該家族所有孩子的名字 ret.first->second.push_back(childName); cin.clear(); //使輸入流重新有效 }while(cin); cin.clear(); //使輸入流重新有效 //讀入要查詢的家族 cout<<"Enter a surname to search: "<<endl; cin>>surname; //根據讀入的家族姓氏進行查找 map<string , vector<string> >::iterator iter = children.find(surname); //輸出查詢結果 if(iter == children.end()) //找不到該家族姓氏 cout<<"no this surname: "<<surname<<endl; else { cout<<"children: "<<endl; //輸出該家族中所有孩子的名字 vector<string>::iterator it = iter->second.begin(); while(it != iter->second.end()) cout<<*it++<<endl; } return 0; }