मुझे std :: ऑब्जेक्ट्स (विशेष रूप से और प्रारंभ में std :: वेक्टर के लिए) के लिए एक कस्टम आवंटक बनाने की आवश्यकता है, लेकिन अंततः यह अन्य लोगों का उपयोग करने के लिए आ सकता हैसबसे खराब हो सकता है अगर मैं स्टेटलेस कस्टम आवंटकों का पालन नहीं करता?
मुझे एक कस्टम आवंटक बनाने की आवश्यकता है कि मुझे इसकी आवश्यकता है आवंटित ट्रैक (ढेर & स्टैक) अनुप्रयोग के व्यक्तिगत घटकों द्वारा संसाधन (यह एप्लिकेशन की एक अंतर्निहित विशेषता है)। मैं संसाधनों का ढेर भाग नजर रखने के लिए कस्टम संभाजक की आवश्यकता होगी, इसलिए यह जरूरी है कि मैं एसटीडी करने के लिए पारित करने में सक्षम हूँ ::
trackerId idToTrackUsage;
myAlloca<int> allocator(idToTrackUsage);
vector<int> Foo(allocator);
हालांकि
, जैसे वेक्टर निर्माता कुछ एक सा मैंने पाया पढ़ने के बाद एसटीएल/सी ++ मानक (संदर्भ देखें) के बारे में यह छोटा बम कह रहा है कि किसी दिए गए प्रकार के सभी आवंटन उदाहरण बराबर होना चाहिए (यानी == किसी भी दो उदाहरणों के लिए सच होना चाहिए), और अधिकांश टर्मिनल; किसी भी आवंटक को किसी भी अन्य उदाहरण द्वारा आवंटित स्मृति को रद्द करने में सक्षम होना चाहिए (यानी, यह जानने के बिना कि वह अन्य उदाहरण क्या हो सकता है)। संक्षेप में, आवंटकों के पास राज्य नहीं हो सकता है।
तो मैं इस के आसपास सबसे अच्छा तरीका खोजने की कोशिश कर रहा हूं। कोई चालाक विचार? मैं वास्तव में वास्तव में वास्तव में std :: वेक्टर के कस्टम संस्करण को रखना नहीं चाहता हूं।
संपादित करें: मैंने http://www2.research.att.com/~bs/C++0xFAQ.html#scoped-allocator पर सी ++ 0x के लिए स्कॉप्ड आवंटकों के बारे में पढ़ा है, लेकिन मैं वास्तव में यह समझने में असमर्थ नहीं था कि यह मेरी समस्या पर कैसे लागू होता है। किसी को भी सोचता है तो सी ++ 0x दूर इस समस्या, टिप्पणी कृपया
संदर्भ:
Allocator C++ article in Wikipedia
Some random further reading courtesy of Google
वैसे, कुछ हद तक संबंधित है, लेकिन मुझे लगता है कि सी ++ 0x में आवंटक मॉडल में महत्वपूर्ण बदलाव होने लगते हैं। इसके बारे में क्या कोई कुछ जानता है? (या संकल्पनाओं को हटाने से पहले ही यह था?) – jalf
मैंने इसके बारे में http://www2.research.att.com/~bs/C++0xFAQ.html#scoped-allocator पर पढ़ा लेकिन मैं वास्तव में दूर नहीं जा सका यह समझने में कि यह मेरी समस्या पर कैसे लागू होता है। (इस के साथ पोस्ट अपडेट करेगा) – lurscher