मैं C ++ में अपरिवर्तनीय वस्तु का उपयोग करके अभ्यास कर रहा हूं। मेरा व्यक्तिगत लक्ष्य अपरिवर्तनीय रेखांकन के अनुक्रम के साथ सामान्य वस्तु ग्राफ (ढेर में) का प्रतिनिधित्व कर रहा है।
बहु-संस्करण ग्राफ का निर्माण करना उतना कठिन नहीं है। समस्या प्रदर्शन है। ब्रूट-फोर्स वर्जनिंग को ग्राफ की पूरी प्रतिलिपि की आवश्यकता होती है, और यह स्वीकार्य नहीं था।
मैंने अपरिवर्तित नोड्स साझा करने का प्रयास किया। लेकिन इस मामले में, मुझे एक नई समस्या मिल गई; संदर्भ। अन्य वस्तु का संदर्भ पूरे ग्राफ में अद्यतन किया जाना चाहिए। हर बार जब मैं एक नया ग्राफ़ संस्करण प्राप्त करता हूं, तो सभी नोड्स पर जाने की आवश्यकता होती है। और यह संदर्भों के साथ नोड्स को उत्परिवर्तित करता है, इसलिए उन्हें भी (कॉपी करके) व्युत्पन्न किया जाना चाहिए। प्रदर्शन ब्रूट-फोर्स कॉपी करने से बेहतर नहीं होगा।
जहां तक मैं कल्पना कर सकता हूं, अपरिवर्तनीय राज्यों के साथ वस्तु ग्राफ के उत्परिवर्तन का प्रतिनिधित्व करने का कोई वास्तविक कुशल तरीका नहीं है। इसलिए मैं इस पर कुछ विचार करने के लिए कह रहा हूं।
क्या यह अपरिवर्तनीय स्थिति के साथ कुशलता से वस्तु ग्राफ के उत्परिवर्तन का प्रतिनिधित्व करना संभव है?