使用map STL存储学生学号和姓名的C++程序


假设我们有一个用于存储学生学号和姓名的map数据结构,学号是整型数据,姓名是字符串类型数据。在标准输入中,我们提供n个查询。每个查询(每行)必须有两个元素,对于类型1查询,则有三个元素。第一个是操作符,第二个是学号,第三个是姓名,对于两个元素的查询,第二个元素是学号。操作如下:

  • 插入。这会将姓名插入到map中对应的学号下。

  • 删除。这会从map中删除对应学号的姓名(如果存在)。

  • 查找。这会根据学号在map中查找姓名,如果存在则显示姓名,否则显示“未找到”。

因此,如果输入类似于n = 8,queries = [[1,5,"Atanu"], [1,8, "Tapan"], [1,3,"Manish"],[2,8],[1,9, "Piyali"], [3,8],[3,3], [3,5]],则输出将是[未找到, Manish, Atanu],因为学号8不存在,学号3的学生姓名是Manish,学号5的学生姓名是"Atanu"。

为了解决这个问题,我们将遵循以下步骤:

  • n := 查询的数量
  • 定义一个map m,键为整型,值为字符串类型。
  • 当n不为零时,每次迭代减少n,执行以下操作:
    • 获取当前查询类型t
    • 获取学号
    • 如果t等于1,则:
      • 获取姓名
      • m[学号] := 姓名
    • 否则,如果t等于2,则:
      • m[学号] := 空字符串
    • 否则:
      • 如果m[学号]不是空字符串,则:
        • 显示m[学号]
      • 否则:
        • 显示“未找到”

示例

让我们看看下面的实现以更好地理解:

#include <iostream>
#include <map>
using namespace std;
int main(){
    int n;
    cin >> n;
    map<int, string> m;
    while (n--) {
        int t;
        cin >> t;
        int roll;
        cin >> roll;
        if (t == 1) {
            string name;
            cin >> name;
            m[roll] = name;
        } else if (t == 2) {
            m[roll] = "";
        } else {
            if(m[roll] != "")
                cout << m[roll] << endl;
            else
                cout << "Not found" << endl;
        }
    }
}

输入

8
1 5 Atanu
1 8 Tapan
1 3 Manish
2 8
1 9 Piyali
3 8
3 3
3 5

输出

Not found
Manish
Atanu

更新于:2021年10月7日

905 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告