程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> map對象建立家族姓氏查詢

map對象建立家族姓氏查詢

編輯:C++入門知識

  題目:定義一個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;  
}  

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved