使用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[學號]
- 否則:
- 顯示“未找到”
- 如果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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP