मैंने पढ़ा है कि एक बार बनाए गए नक्शे के क्रम को बदलना संभव नहीं है, हालांकि मैं सोच रहा हूं कि क्या उस क्रम में उस मूल्य के माध्यम से पुनरावृति करना संभव है।

उदाहरण के लिए:

अगर मेरे पास map<int, string> m है जहां मेरे पास मान हैं

m[1] = "Matt"
m[2] = "Car"
m[3] = "Arnold"
m[4] = "Bat"

वास्तविक संग्रह में क्रम बदलने के बजाय केवल वर्णानुक्रम में तत्वों को पुनरावृत्त करना और मुद्रित करना संभव है, इसलिए Arnold, Bat, Car, Matt आउटपुट किया जाता है?

1
Wolf 1 पद 2015, 21:55

2 जवाब

सबसे बढ़िया उत्तर

एक std::map कुंजी के operator < या एक कस्टम तुलनित्र के साथ अपने तत्वों को उनकी कुंजी के अनुसार क्रमबद्ध करते हैं। हालाँकि, यह मानों के अनुसार खुद को सॉर्ट नहीं कर सकता है।

आपको std::set<std::string> में रुचि हो सकती है, जहां कुंजियाँ हैं मान (लेकिन आप "प्रत्यक्ष" अनुक्रमण खो देते हैं), या एक साधारण std::vector<std::string> जो आप std::sort कर सकते हैं ।

3
Quentin 1 पद 2015, 19:01

आपको map मानों को एक अलग संरचना में कॉपी करना होगा (उदाहरण के लिए vector) और उन्हें वहां सॉर्ट करना होगा।

map कुंजी के आधार पर क्रम में मूल्यों को संग्रहीत करता है और मूल्य आदेश के आधार पर नहीं देख सकता है।

आप एक ऐसा वर्ग बना सकते हैं जो यदि आप चाहते हैं तो दोनों आदेशों को ट्रैक करता है।

1
Guvante 1 पद 2015, 19:02