C++ 使用名称作为键,使用生日作为值的字典实现

C++ 使用名称作为键,使用生日作为值的字典实现,c++,C++,对于本作业,您将使用字典来跟踪您的朋友和亲戚的姓名和生日。您应该能够执行以下操作: 添加条目 删除条目 在字典里查找生日的名字 显示字典中每个条目的名称和生日 在字典里列出每个在某个月出生的人 搜索键是名称,您可以假定名称是唯一的 对于这个作业,除了同一个生日,我已经完成了大部分课程。这就是我计划为我的同班同学做的 void Dict::sameBirthday() { for (int i = 0; i < itemcount; i++) { if(item[i].g

对于本作业,您将使用字典来跟踪您的朋友和亲戚的姓名和生日。您应该能够执行以下操作:

  • 添加条目
  • 删除条目
  • 在字典里查找生日的名字
  • 显示字典中每个条目的名称和生日
  • 在字典里列出每个在某个月出生的人

    搜索键是名称,您可以假定名称是唯一的

    对于这个作业,除了同一个生日,我已经完成了大部分课程。这就是我计划为我的同班同学做的

    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";
            }
    
     } 
    }
    
    void Dict::sameBirthday()
    {
    对于(int i=0;icoutYes!!多亏了paddy。我犯了一个错误,我只是比较值,看看数组中哪一个具有相同的值,而没有给出要查找的值。因此,我可以使用输入值列出具有相同值的键。再次感谢paddy

     void Dict::sameMonth(string month)
     {
    
        for (int i = 0; i < itemcount; i++)
        {
            if (month == item[i].getMonth())
            {
                cout << item[i].getName()<< " - ";
            }
        }
        cout << endl;
      }
    
    void Dict::sameMonth(字符串月)
    {
    对于(int i=0;i不能“感觉像”这意味着您没有实际测试过它。如果是这样,请先这样做。一旦您测试了它,您应该能够解释问题所在。您可以创建一个反向映射,例如
    std::map birth\u to_name\u map
    。然后访问具有相同生日的所有人的列表非常简单。您当前编写的代码将l仅输出存储在数据结构中相邻元素中的一对名称中的第一个。如果存储按出生日期排序的记录,这可能接近解决方案。但这似乎不太可能。您还有一种边缘情况,即访问数据结构末尾的一个元素,很可能是未定义的行为我们的测试不是很清楚,所以我只是做了一个计数器,看看我能得到多少,它只给了我1个增量。我想得到3个,因为我已经声明3个人的生日相同。