c++ - Are these appropriate practices when working with std::map? -


मुझे std :: map का उपयोग करने पर कुछ प्रश्न हैं:

    < Li>

    एक enum को std :: map में कुंजी के रूप में एक अच्छा अभ्यास का उपयोग कर रहा है? निम्नलिखित कोड पर विचार करें:

    <पूर्व> आकार का आकार {सर्किल, आयत}; Int main (int argc, char * argv []) {std :: map & lt; आकार, std :: string & gt; strMap; // strMap.insert (आकार :: सर्कल, "सर्किल"); // यह स्ट्रैम को संकलित नहीं करेगा [आकार :: सर्कल] = "सर्किल"; // लेकिन यह 0 पर काम करेगा; }
  1. ऊपर दिए गए उदाहरण में, कॉल करने के लिए सम्मिलित () क्यों अतिभारित एक कोडक त्रुटि उत्पन्न है [ ] ऑपरेटर सही ढंग से काम करता है? std :: map

  2. में आइटम डालने के लिए इनमें से कौन सी विधियों की अनुशंसा की जाती है? मैं समझता हूं कि जब find () पद्धति का उपयोग std :: map वर्ग में किया जाता है, यह कंटेनर में अनुक्रमिक खोज नहीं कर रहा है, लेकिन कुछ लॉगरिदमिक खोज कर रही है जो अनुक्रमिक खोज की तुलना में तेज़ हो जाएगा क्या यह समझना सही है?

  1. एक key_type खुद से बुरा नहीं है ( संपादित करें ) लेकिन अगर आप केवल अनुक्रमिक मान-मान का उपयोग करते हैं, तो ओ (1) एक्सेस के साथ एक std :: vector भी बेहतर होता है।
  2. < कोड> डालें इस तरह से उपयोग किया जाना चाहिए: mapVar.insert (make_pair (कुंजी, मान)); यह भी देखें।
  3. हाँ, std :: नक्शा में ओ (लॉग (एन)) लुकअप है, जैसा मानक की गारंटी है, और यह ओ (एन) से भी तेज है यदि n पर्याप्त रूप से अधिक है।

Comments