2011-10-27 11 views
8

मैं जानना चाहता हूं कि कैसे परिवर्तनीय एक कंटेनर (मानचित्र, वेक्टर, सूची, ...) को प्रभावित करता है। इसके अलावा, मुझे क्या ध्यान में रखना होगा?सी ++ कंटेनर के प्रदर्शन में परिवर्तनीय कीवर्ड को कैसे प्रभावित करता है?

+0

लोग सामान्य रूप से म्यूटेबल कीवर्ड के बारे में किताबें लिखेंगे, शायद आप इसे सीमित कर सकते हैं, यह दिखाए जा सकते हैं कि यह आपके विशिष्ट मामले में क्या है। – PlasmaHH

उत्तर

10

mutable, const की तरह, बस एक संकलन-समय की बात है। यह आपको एक स्थिर संदर्भ में उस चर को संशोधित करने की अनुमति देता है। रनटाइम पर, कंटेनर mutable या नहीं घोषित करने में कोई फर्क नहीं पड़ता है।

class Foo{ 
    mutable int i; 

public: 
    void foo() const{ 
    // constant context, but you can modify `i` 
    i = 5; 
    } 
}; 
+2

इसे ऑप्टिमाइज़र – Dani

+2

के संकेत के रूप में भी उपयोग किया जा सकता है यह ऑप्टिमाइज़र क्या कर सकता है को प्रभावित करता है। –

+1

कुछ अनुकूलन अवसर हैं जो आप अपरिवर्तनीय वस्तुओं (व्यापक अर्थ में) पर कर सकते हैं, जो 'mutable' सदस्यों के साथ' const' ऑब्जेक्ट्स पर लागू होने पर आपके कोड को तोड़ सकता है। हालांकि, मैं संकलक कार्यान्वयन के साथ पर्याप्त परिचित नहीं हूं कि यह बताने के लिए कि उन्हें किस हद तक लागू किया गया है। फिर भी, सवाल इस कारण के लिए मान्य है। – bitmask

संबंधित मुद्दे