2017-05-09 35 views
-3

對於此作業,您將執行字典以跟蹤親朋好友的姓名和生日。你應該能夠做到以下操作:使用名稱作爲鍵值和生日值作爲值的字典實現

  • 添加一個條目
  • 刪除條目
  • 搜索字典的生日給定名稱
  • 顯示在每個項目的名字和生日字典
  • 列表中的所有人在字典中誰是出生在一個給定月份

    搜索關鍵字的名稱,你可以假設名稱是未神遊。

    對於這個任務,我已經實現了除了同一個生日以外的大部分課程。這就是我計劃爲同一生日班開展的活動。

    void Dict::sameBirthday() 
    { 
    for (int i = 0; i < itemcount; i++) 
    { 
         if(item[i].getDate() == item[i+1].getDate()) 
         { 
          int index = i; 
          cout << item[index].getName() << "\n"; 
         } 
    
    } 
    } 
    

    測試是真不明白,所以我只是做一個計數器只是爲了看看有多少我會得到和它只是給了我1個增量。我想得到3,因爲我已經宣佈3人有相同的出生日期。對於這一類,關鍵是名稱和存儲順序,值是可以通過搜索名稱獲得的出生日期

感謝幫助。

+0

「感覺」意味着你沒有真正測試過它。如果是這樣的話,那就先做。一旦你*測試了它,你應該能夠解釋問題是什麼。 –

+0

你可以創建一個反向映射,如'std :: map > birthday_to_name_map'。然後訪問同一個生日的每個人的名單是微不足道的。 – paddy

+0

您當前編寫的代碼只會輸出存儲在數據結構中的_adjacent elements_中的一對名稱中的第一個。如果您存儲按出生日期排序的記錄,則這可能接近成爲解決方案。但這似乎不太可能。在數據結構末尾訪問一個元素時,您也有一種邊界情況,這很可能是未定義的行爲。 – paddy

回答

0

是的!感謝稻田。我犯了一個錯誤,我只是比較值,看看哪一個在數組中具有相同的值,而不給出要查找的值。因此,我可以使用輸入值列出具有相同值的鍵。再次感謝稻田!

void Dict::sameMonth(string month) 
{ 

    for (int i = 0; i < itemcount; i++) 
    { 
     if (month == item[i].getMonth()) 
     { 
      cout << item[i].getName()<< " - "; 
     } 
    } 
    cout << endl; 
    } 
相關問題