मैं मौजूदा कोड को एक अलग मंच पर पोर्ट करने के लिए एक इंजन विकसित कर रहा हूं। मौजूदा कोड को किसी तृतीय पक्ष API का उपयोग करके विकसित किया गया है, और मेरा इंजन मेरे नए प्लेटफ़ॉर्म के संदर्भ में उन तृतीय पक्ष API फ़ंक्शन को फिर से परिभाषित करेगा।क्या मुझे एक एसटीएल कंटेनर में तत्व के लिए एक इटरेटर या पॉइंटर वापस करना चाहिए?
निम्नलिखित परिभाषा एपीआई से आते हैं:
typedef unsigned long shape_handle;
shape_handle make_new_shape(int type);
मैं make_new_shape
को फिर से परिभाषित करने की जरूरत है और मैं shape_handle
को फिर से परिभाषित करने का विकल्प है।
मैं इस संरचना (सरलीकृत) को परिभाषित किया है:
struct Shape
{
int type
};
make_new_shape
के कोलर Shape
की अंतर्निहित संरचना के बारे में परवाह नहीं है, यह सिर्फ इतना है कि यह काम करता है कॉल कर सकते हैं एक यह करने के लिए "संभाल" की जरूरत है जैसे:
void `set_shape_color(myshape, RED);`
जहां myshape
आकार के लिए हैंडल है।
मेरे इंजन Shape
वस्तुओं और अन्य आवश्यकताओं के लिए स्मृति का प्रबंधन करेगा हुक्म है कि इंजन एक सूची या अन्य iterable कंटेनर में Shape
वस्तुओं के भंडारण किया जाना चाहिए।
मेरा सवाल यह है कि, इस हैंडल का प्रतिनिधित्व करने का सबसे सुरक्षित तरीका क्या है - यदि Shape
स्वयं एक std :: सूची - एक इटरेटर, एक सूचक, एक अनुक्रमणिका में संग्रहीत किया जा रहा है?
तुम क्यों एसटीडी चुना है :: सूची? –
@jk - मैं कंटेनर के मध्य से जोड़ सकते हैं और Shape' वस्तुओं को हटाने 'करने में सक्षम होने की जरूरत है। – BeeBand
आप निश्चित रूप से shape_handle (या make_new_shape) को फिर से परिभाषित नहीं करना चाहते हैं। –