2012-02-12 10 views
5

क्या आप कृपया मुझे बता सकते हैं कि मैं बहुआयामी मानचित्र कैसे लिख सकता हूं।सी ++ में 3 डी मैपिंग कैसे लिखें?

map<string, int> Employees 
Employees[“person1”] = 200; 

मैं 3 डी मैपिंग के लिए निम्न जैसा कुछ उपयोग करने के लिए कोशिश कर रहा था: दो आयामी नक्शे के लिए, मैं निम्नलिखित किया था।

map<string, string, int> Employees; 
Employees[“person1”, “age”] = 200; 

क्या आप कृपया मुझे ऐसा करने का सही तरीका बता सकते हैं?

और क्या कोई तरीका है कि मैं सभी मानचित्र तत्वों को 0 के रूप में प्रारंभ कर सकता हूं? एक सरणी की तरह हम कह सकते हैं int array[10]={0};

उत्तर

9

आपको ऐसे मानचित्रों का मानचित्र बनाना होगा।

map<string, map<string, int> > employees; 
employees["person1"]["age"] = 200; 
+3

कि एक बहुत समझाने हो जाएगा। उदाहरण के साथ इसे दिखाने के लिए धन्यवाद। –

+0

क्या कोई तरीका है कि मैं सभी मानचित्र फ़ंक्शन को 0 के रूप में प्रारंभ कर सकता हूं? एक सरणी की तरह हम 'int सरणी [10] = {0}; ' –

+0

मैप करने के लिए कॉल [कुंजी] ऑब्जेक्ट को डिफ़ॉल्ट कन्स्ट्रक्टर के साथ प्रारंभ करता है। पूर्णांक के लिए यह बिल्कुल शून्य है। इसका मतलब है कि किसी भी दो यादृच्छिक रूप से चुनी गई चाबियों के लिए 'emplyees ["foo"] ["bar"] == 0' सच हो जाएगा। –

6

आप दो वस्तुओं गठबंधन करने के लिए utility पुस्तकालय की pair वर्ग का उपयोग कर सकते हैं:

map<pair<string, string>, int> Employees; 
Employees[make_pair("person1", "age")] = 200; 

http://www.cplusplus.com/reference/std/utility/pair/

3
नेस्टेड नक्शा करने के बजाय

देखें, तो आप कुंजी के रूप में उपयोग कर सकते हैं टपल; (यह एक सी ++ 11 कोड है, आप भी boost::tuple के साथ ऐसा ही कर सकते हैं)।

#include<map> 
#include<tuple> 
#include<string> 
using namespace std; 
map<tuple<string,string>,int> m; 
int main(){ 
    m[make_tuple("person1","age")]=33; 
} 
-1

क्या तुम यहाँ क्या कर रहे हैं 3 डी मैपिंग लेकिन 2 डी मैपिंग नहीं है, how to use stl::map as two dimension array

सही 3 डी मैपिंग जैसे

map<string, map<string, map<int, string> > > Employees; 
Employees[“person1”][“age”][20] = "26/10/2014";