Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C ++ สำหรับเก็บม้วนและชื่อนักเรียนโดยใช้แผนที่ STL


สมมติว่าเรามีโครงสร้างข้อมูลแผนที่สำหรับให้นักเรียนหมุนและตั้งชื่อม้วนเป็นข้อมูลจำนวนเต็มและชื่อเป็นข้อมูลประเภทสตริง ในการป้อนข้อมูลมาตรฐานของเรา เรามี n แบบสอบถาม ในแต่ละแบบสอบถาม (ในแต่ละบรรทัด) จะต้องมีสององค์ประกอบและสำหรับการค้นหาประเภท 1 จะมีสามองค์ประกอบ อันแรกคือตัวดำเนินการ อันที่สองคือม้วน และอันที่สามคือชื่อ สำหรับสององค์ประกอบที่สอบถาม รายการที่สองคือหมายเลขม้วน การดำเนินการเป็นเหมือนด้านล่าง−

  • แทรก. ซึ่งจะแทรกชื่อลงในแผนที่ที่ม้วนที่เกี่ยวข้อง

  • ลบ. การดำเนินการนี้จะลบเลขที่ม้วนออกจากแผนที่ (ถ้ามี)

  • ค้นหา. การดำเนินการนี้จะค้นหาชื่อในแผนที่ด้วยหมายเลขม้วน หากมี จะแสดงชื่อ มิฉะนั้น จะแสดง ไม่พบ

ดังนั้น หากอินพุตเป็น n =8 คำสั่ง =[[1,5,"Atanu"], [1,8, "Tapan"], [1,3,"Manish"],[2,8], [1,9, "ปิยะลี"], [3,8], [3,3], [3,5]] แล้วผลลัพธ์จะเป็น [ไม่พบ, มานิช, อาตานุ] เพราะการทอย 8 ไม่มีอยู่, ชื่อนักเรียนม้วนที่ 3 คือ Manish และชื่อนักเรียนที่ม้วนที่ 5 คือ "Atanu"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • n :=จำนวนคำค้นหา
  • กำหนดหนึ่งแมป m ของคีย์ประเภทจำนวนเต็มและค่าประเภทสตริง
  • ในขณะที่ n ไม่ใช่ศูนย์ ให้ลด n ในการวนซ้ำแต่ละครั้ง ทำ:
    • ใช้ประเภทข้อความค้นหาปัจจุบัน t
    • เอาเลขม้วน
    • ถ้า t เหมือนกับ 1 แล้ว:
      • ตั้งชื่อ
      • ม[ม้วน] :=ชื่อ
    • มิฉะนั้นเมื่อ t เหมือนกับ 2 แล้ว:
      • m[roll] :=สตริงว่าง
    • อย่างอื่น
      • ถ้า m[roll] ไม่ใช่สตริงว่าง ดังนั้น:
        • แสดง 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