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