यह अजीब लग सकता है, लेकिन मैं इसे तर्कसंगत बनाने की कोशिश करूंगा। मैं वर्तमान में shared_ptr साथ संयोजन के रूप में बड़े पैमाने पर boost.object_pool उपयोग करें, और हाल ही में मैं एक स्थिति है कि मैं वर्तमान कार्यक्रम राज्यों की फोटो लेने की जरूरत का सामना करना पड़ा है, ताकि पूर्ण पैमाने पर पुनरावृत्ति/रोलबैक/तेजी से आगे की तरह कार्यक्षमता बनाने के लिए।सी या सी ++ में कोई क्लोनबल ऑब्जेक्ट पूल कार्यान्वयन?
इसलिए मैं किसी ऑब्जेक्ट पूल को कहीं और उपयोग करने के लिए क्लोन करने की कोशिश नहीं कर रहा हूं, जो स्पष्ट रूप से काम नहीं करेगा क्योंकि अगर मुझे boost.pool के इंटरफ़ेस (जो मैं नहीं हूं) द्वारा ऐसा करने की अनुमति है, तो कोई मान्य नहीं होगा पॉइंटर्स उस नए क्लोन पूल में भाग को इंगित करते हैं और यह केवल व्यर्थ होगा। लेकिन यहां मेरा उपयोग का मामला है कि मैं पेस्ट "रीप्ले/रोलबैक की ज़रूरतों के साथ मूल पूल में वापस आना चाहता हूं।
मैं निश्चित रूप से बस सभी राज्यों, वस्तुओं, और उप-राज्यों, उप-वस्तुओं और सबबब को कॉपी और क्लोन कर सकता हूं ... मैन्युअल रूप से और फिर उन्हें स्नैपशॉट में पैक कर सकता हूं, और उम्मीद है कि सब ठीक हो जाएगा, लेकिन यह त्रुटि है- प्रोजेक्ट को पहले से ही मिली जटिलता दी गई है, और अगर मैं सिर्फ स्मृति को कॉपी कर सकता हूं तो यह बहुत धीमी होनी चाहिए। पूर्ववत-रेडो प्राप्त करने के लिए कमांड पैटर्न (या जैसे) का उपयोग करना प्रश्न से काफी सुंदर है क्योंकि पूर्ववत-पूर्व तंत्र मेरा इरादा नहीं है।
मैं सोच रहा था कि क्या मैं एक मर-हार्ड पारंपरिक-सी तरीके से फिर से स्क्रैच से प्रोजेक्ट करता हूं, और एक साधारण memcpy (स्नैपशॉट, all_states, आकार) कॉल लगभग सभी काम करेगा।
क्या कोई अन्य विकल्प है जिसे मैं अभी भी याद कर रहा हूं? क्या कोई boost.object_pool कार्यान्वयन की तरह है जो आपको अंतर्निहित स्मृति क्षेत्र को क्लोन करने की अनुमति देता है? स्थिति पर विचार कर एक व्यावहारिक विकल्प boost.object_pool घुसपैठ कर रहा है?
एक समान इंटरफेस के साथ अपना खुद का, कॉपी करने योग्य, ऑब्जेक्ट पूल लिखना _too_ कठिन या समय लेने वाला प्रतीत नहीं होता है। – Pubby
@ पब्बी: ग्राफ-जैसी संरचनाएं क्लोन करना कभी आसान नहीं होती हैं। सबसे आम गलतियां एक अनंत चक्र में फंस रही हैं और अनजाने में ग्राफ को तोड़ रही हैं। यह भी डीबग करना नरक है। –