2012-02-13 10 views
7

पर सरणी मान जोड़ना मैं एक पूर्णांक कुंजी और 2 तत्वों के साथ पूर्णांक की सरणी से बने मानों के साथ एक मल्टीमैप का उपयोग करने का प्रयास कर रहा हूं।std :: multimap

typedef std::multimap<int,int[2]> reverseHeightMap; 
reverseHeightMap container; 

जब मैं इस तरह मान जोड़ने के लिए प्रयास करें:

container.insert(std::pair<int,int[2]>(5,{1,2})); 

मैं:

error C2143: syntax error: missing ')' before '{' 

अगर मैं डेटा संरचना को परिभाषित करने या डालने पर नाकाम रहने रहा हूँ मैं समझ नहीं सकता मूल्य, या दोनों। मदद के लिए अग्रिम धन्यवाद :)

उत्तर

8

आप कंटेनरों में सरणी स्टोर नहीं कर सकते हैं क्योंकि एसटीएल कंटेनर में संग्रहीत डेटाटाइप की आवश्यकताओं में से एक यह है कि वे असाइन किए जा सकते हैं; सरणी असाइन करने योग्य नहीं हैं।

std::vector या std::array<int, 2> का उपयोग करने पर विचार करें।

5

उपयोग std::pair:

typedef std::multimap<int,std::pair<int,int>> reverseHeightMap; 

या:

Encapsulate पूर्णांक [2] struct में:

struct int_2 
{ 
    int i_0; 
    int i_1; 
}; 

typedef std::multimap<int,int_2> reverseHeightMap;