मेरे पास एक स्थिति है, जहां मैं एक नक्शा रखना चाहता हूं जो प्रारंभ करने के बाद कुंजी जोड़ने/हटाने की अनुमति नहीं देता है, लेकिन मानों को बदलने की अनुमति है (इस प्रकार मैं केवल नक्शा const
नहीं कर सकता)। यानीकॉन्स कुंजी के साथ मानचित्र लेकिन गैर कॉन्स वैल्यू?
/*semi-const*/ map<int,int> myMap = initMap();
myMap[1] = 2; // NOT OK, because potentially adds a new key
myMap.at(1) = 2; // OK, because works only if key is present
for (auto & element : myMap) {
element.second = 0; // OK, values may change
}
मैं std::map
के लिए अपने खुद के आवरण लिख सकता है, लेकिन मैं महसूस कर रही यह कुछ भी असामान्य नहीं है कि है, तो मुझे आश्चर्य है कि अगर वहाँ पहले से मौजूदा समाधान है।
क्या मानचित्र के लिए कुछ मानक मुहावरे है जो कुंजी जोड़ने/हटाने की अनुमति नहीं देता है, जबकि मान बदल सकते हैं?
पुनश्च: मुझे पता है कि अकेले शीर्षक, थोड़ा अस्पष्ट है, क्योंकि कुंजी पहले से ही एक नक्शे में const रहे हैं, लेकिन मुझे आशा है कि यह स्पष्ट है कि मैं क्या मतलब है ...
नहीं, मुझे लगता नहीं मिलते हैं, कुछ भी अर्थ की दृष्टि से आपकी आवश्यकता के बराबर ('const' और' mutable' के साथ) आप 'के std :: map' बाहर मजबूर करने के लिए की संभावना नहीं है अच्छी तरह से पढ़ें, 'std :: map' को इस –
जैसे उपयोग करने के लिए डिज़ाइन नहीं किया गया है, इस तरह का मानचित्र अपशिष्ट होगा। आप क्रमबद्ध 'std :: vector' या इसी तरह का उपयोग करके अपनी खुद की कक्षा बना सकते हैं। मानचित्र का उपयोग करने के लिए एक निश्चित कीमत है, लाभ के बिना उस कीमत का भुगतान (पुनर्विक्रय करने की क्षमता आदि) अनुचित लगता है। – Slava