Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để lưu trữ danh sách và tên sinh viên bằng cách sử dụng bản đồ STL

Giả sử chúng ta có cấu trúc dữ liệu bản đồ cho học sinh cuộn và đặt tên cuộn là dữ liệu số nguyên và tên là dữ liệu kiểu chuỗi. Trong đầu vào tiêu chuẩn của chúng tôi, chúng tôi cung cấp n truy vấn. Trong mỗi truy vấn (trong mỗi dòng) phải có hai phần tử và đối với truy vấn loại 1 thì có ba phần tử. Đầu tiên là toán tử, thứ hai là cuộn và thứ ba là tên, đối với hai phần tử truy vấn, mục thứ hai là số cuộn. Các hoạt động như dưới đây−

  • Chèn. Thao tác này sẽ chèn tên vào bản đồ ở cuộn tương ứng

  • Xóa bỏ. Thao tác này sẽ xóa số so với số cuộn khỏi bản đồ (nếu tồn tại).

  • Tìm kiếm. Thao tác này sẽ tìm kiếm tên trên bản đồ với số cuộn, nếu có thì hiển thị tên, nếu không thì hiển thị Không tìm thấy.

Vì vậy, nếu đầu vào là n =8, các truy vấn =[[1,5, "Atanu"], [1,8, "Tapan"], [1,3, "Manish"], [2,8], [1,9, "Piyali"], [3,8], [3,3], [3,5]], thì đầu ra sẽ là [Không tìm thấy, Manish, Atanu] vì không có cuộn 8, tên của học sinh có cuộn 3 là Manish và tên của học sinh có cuộn 5 là "Atanu".

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • n:=số lượng truy vấn
  • Xác định một bản đồ m, có khóa kiểu số nguyên và giá trị kiểu chuỗi.
  • while n khác 0, giảm n trong mỗi lần lặp, thực hiện:
    • lấy loại truy vấn hiện tại t
    • lấy số cuộn
    • nếu t giống 1, thì:
      • lấy tên
      • m [roll]:=name
    • ngược lại khi t giống 2 thì:
      • m [roll]:=một chuỗi trống
    • nếu không thì
      • nếu m [roll] không phải là chuỗi trống, thì:
        • hiển thị m [cuộn]
      • Mặt khác
        • hiển thị "Không tìm thấy"

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
        }
    }
}

Đầu vào

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

Đầu ra

Not found
Manish
Atanu