मान लीजिए कि हमारे पास छात्रों के रोल के लिए एक नक्शा डेटा संरचना है और नाम रोल एक पूर्णांक डेटा है और नाम स्ट्रिंग प्रकार डेटा है। हमारे मानक इनपुट में हम n प्रश्न प्रदान करते हैं। प्रत्येक क्वेरी में (प्रत्येक पंक्ति में) दो तत्व होने चाहिए और टाइप 1 क्वेरी के लिए तीन तत्व होने चाहिए। पहला ऑपरेटर है, दूसरा रोल है और तीसरा नाम है, दो तत्वों के लिए दूसरा आइटम रोल नंबर है। संचालन नीचे की तरह हैं-
-
डालना। यह नाम को संबंधित रोल पर मानचित्र में सम्मिलित करेगा
-
मिटाना। यह मानचित्र से रोल नंबर के सामने वाले को हटा देगा (यदि मौजूद है)।
-
खोज। यह रोल नंबर के साथ मानचित्र में नाम खोजेगा, यदि मौजूद है तो नाम दिखाता है, अन्यथा नहीं मिला दिखाएँ।
इसलिए, यदि इनपुट n =8 की तरह है, तो क्वेरीज़ =[[1,5,"अतनु"], [1,8, "तपन"], [1,3,,"मनीष"], [2,8], [1,9, "पियाली"], [3,8], [3,3], [3,5]], तो आउटपुट होगा [नहीं मिला, मनीष, अतनु] क्योंकि रोल 8 मौजूद नहीं है, रोल 3 वाले छात्र का नाम मनीष है और रोल 5 वाले छात्र का नाम "अतनु" है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=प्रश्नों की संख्या
- पूर्णांक प्रकार कुंजी और स्ट्रिंग प्रकार मान का एक मानचित्र m परिभाषित करें।
- जबकि n गैर-शून्य है, प्रत्येक पुनरावृत्ति में n घटाएं, करें:
- वर्तमान क्वेरी प्रकार टी लें
- रोल नंबर लें
- यदि t 1 के समान है, तो:
- नाम लें
- एम [रोल] :=नाम
- अन्यथा जब t 2 के समान हो, तब:
- m[रोल] :=एक खाली स्ट्रिंग
- अन्यथा
- यदि m[roll] रिक्त स्ट्रिंग नहीं है, तो:
- प्रदर्शन एम[रोल]
- अन्यथा
- प्रदर्शन "नहीं मिला"
- यदि m[roll] रिक्त स्ट्रिंग नहीं है, तो:
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#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