स्विच-केस से जुड़े कई सुझाव हैं। दक्षता के मामले में, यह बेहतर हो सकता है, वही हो सकता है। बदतर नहीं होगा।
लेकिन यदि आप आईडी पर आधारित मूल्य या नाम को बस सेट/वापस कर रहे हैं, तो हाँ। एक नक्शा बिल्कुल वही है जो आपको चाहिए। एसटीएल कंटेनरों को अनुकूलित किया गया है, और यदि आपको लगता है कि आप बेहतर अनुकूलित कर सकते हैं, तो आप या तो अविश्वसनीय रूप से स्मार्ट या चौंकाने वाली गूंगा हैं। क्योंकि यह आईडी की संख्या बढ़ जाती के रूप में और अधिक कुशल है
उदाहरण, एक एकल कॉल एक std :: नक्शा mymap कहा जाता है का उपयोग कर,
thisvar = mymap[x.getID()];
इन
if(x.getID() == ...){thisvar = ...;}
के 50 की तुलना में बेहतर है। यदि आप रुचि रखते हैं, तो डेटा संरचनाओं पर एक अच्छा प्राइमर खोजें।
लेकिन जो मैं वास्तव में यहां देखता हूं वह रखरखाव/फिक्सिंग समय है। यदि आपको चर के नाम को बदलने की आवश्यकता है, या getID() या getName() का उपयोग करने से बदलना है, या किसी प्रकार का मामूली परिवर्तन करना है, तो आपको इसे अपने उदाहरण में फिफ्टी टाइम्स करना होगा। और जब भी आप आईडी जोड़ते हैं तो आपको एक नई लाइन की आवश्यकता होती है।
मानचित्र एक कोड में परिवर्तन को कम करता है कोई बात नहीं कि आपके पास कितनी आईडी हैं।
उसने कहा, यदि आप वास्तव में प्रत्येक आईडी के लिए अलग-अलग कार्रवाइयां कर रहे हैं, तो स्विच-केस बेहतर हो सकता है। कथन के बजाए स्विच-केस के साथ, आप प्रदर्शन और पठनीयता में सुधार कर सकते हैं। यहां देखें: Advantage of switch over if-else statement मैं पॉइंटर्स से फ़ंक्शंस से बचूंगा जबतक कि आप इस बात पर बहुत स्पष्ट नहीं हैं कि वे आपके कोड को कैसे सुधारेंगे, क्योंकि यदि आप 100% निश्चित नहीं हैं कि आप क्या कर रहे हैं, तो वाक्यविन्यास को गड़बड़ कर दिया जा सकता है, और यह किसी भी चीज के लिए अधिक है जो आप संभवतः एक मानचित्र का उपयोग करेंगे।
असल में, मुझे उस समस्या में रुचि होगी जो आप हल करने का प्रयास कर रहे हैं। आप मानचित्र या स्विच-केस के साथ बेहतर हो सकते हैं, लेकिन अगर आपको लगता है कि आप मानचित्र का उपयोग कर सकते हैं, तो यह बिल्कुल सही है कि आपको इसके बजाय क्या उपयोग करना चाहिए।
क्या आपके पास पंक्ति में बयान होने पर गंभीरता से 50 है? मुझे लगता है कि एक 'लूप' क्रम में हो सकता है ... –
आपको अपने बयान में जो कुछ करना है उसे जोड़ना चाहिए। वैसे, कोड मार्कअप के लिए, कोड का चयन करें और '010' बटन का उपयोग करें या कोड को 4 रिक्त स्थान से इंडेंट करें। –
[स्पष्टता के लिए हटाया गया] –