मेरी वर्तमान परियोजना में मैं एक बहुआयामी डेटास्ट्रक्चर से निपट रहा हूं। अंतर्निहित फ़ाइल अनुक्रमिक रूप से संग्रहीत है (यानी एक विशाल सरणी, वेक्टर का कोई वेक्टर नहीं)। इन डेटास्ट्रक्चर का उपयोग करने वाले एल्गोरिदम व्यक्तिगत आयामों के आकार को जानने की आवश्यकता है।जेनेरिक सी ++ बहुआयामी इटरेटर
मुझे आश्चर्य है कि एक बहुआयामी इटरेटर वर्ग को सामान्य तरीके से कहीं और निश्चित किया गया है और यदि इससे निपटने के तरीके पर कोई मानक या पसंदीदा तरीके हैं।
फिलहाल मैं कुछ अतिरिक्त विधियों के साथ एक रैखिक इटरेटर का उपयोग कर रहा हूं जो प्रत्येक आयाम के आकार को वापस कर देता है और पहले भाग में कितने आयाम हैं। कारण मुझे यह पसंद नहीं है क्योंकि मैं उदाहरण के लिए एक उचित तरीके से std :: दूरी का उपयोग नहीं कर सकता (यानी केवल पूरी संरचना की दूरी लौटाता है, लेकिन अलग-अलग आयाम के लिए नहीं)।
अधिकांश भाग के लिए मैं एक रैखिक फैशन में डेटास्ट्रक्चर का उपयोग करूंगा (पहला आयाम खत्म करने के लिए शुरू होता है -> अगला आयाम + ... और इसी तरह), लेकिन यह जानना अच्छा होगा कि एक आयाम "समाप्त होता है"। मुझे नहीं पता कि इस तरह के दृष्टिकोण में ऑपरेटर *(), ऑपरेटर +() और ऑपरेटर ==() के साथ ऐसा कैसे करें।
वैक्टर दृष्टिकोण का एक वेक्टर डिफॉल्ट किया गया है, क्योंकि मैं फ़ाइल को विभाजित नहीं करना चाहता हूं। इसके अलावा एल्गोरिदम को विभिन्न आयामों के साथ संरचना पर काम करना चाहिए और इसलिए सामान्य बनाना मुश्किल है (या शायद कोई रास्ता है?)।
बूस्ट मल्टी_एरे में समान समस्याएं हैं (इटरेटर के एकाधिक "स्तर")।
मुझे आशा है कि यह बहुत अस्पष्ट या अमूर्त नहीं है। सही दिशा में किसी भी संकेत की सराहना की जाएगी।
मैं अपने आप को फिर से समाधान ढूंढ रहा था और बूस्ट :: mult_array का पुनरीक्षण कर रहा था। चूंकि यह पता चला है कि उनके साथ डेटा पर उप दृश्य उत्पन्न करना संभव है, लेकिन साथ ही साथ शीर्ष स्तर पर प्रत्यक्ष इटरेटर भी लेना चाहिए और डेटा संरचना को "फ़्लैट" करना चाहिए। मल्टी_एरे के लागू संस्करण हालांकि मेरी आवश्यकताओं के अनुरूप नहीं हैं, इसलिए मैं शायद एक स्वयं को लागू करूंगा (जो पृष्ठभूमि में फ़ाइलों की कैशिंग को संभालता है) जो अन्य बहु_आरे के साथ संगत है।
कार्यान्वयन के बाद मैं इसे फिर से अपडेट कर दूंगा।
ऐसा लगता है कि आपको बहुआयामी इटरेटर स्वयं को लागू करना है। बस ऑपरेटरों को अपने आप को सीमित न करें: आप प्रत्येक आयाम में वर्तमान स्थिति के बारे में जानकारी पूछने के लिए नामित विधियों का उपयोग कर सकते हैं। –
यह सवाल दिलचस्प है। ऐसी सूचनाएं प्रदान करने के लिए मुझे मिला एकमात्र तरीका यह है कि बहु-सूचकांक को कम कर सकें। फ्लैटन इंडेक्स (और इसके विपरीत) से '{x, y, z}'। मैं नहीं देखता कि आप उस उद्देश्य के लिए अपनी खुद की कस्टम कक्षा प्रदान किए बिना "मानक" तरीके से कैसे कर सकते हैं। – coincoin
त्वरित उत्तर के लिए दोनों धन्यवाद। @ सर्जरोगैच: मैंने जो भी सोचा था, वह ऐसा लगता है, लेकिन ऐसा लगता है कि "विरोधी-मूर्खतापूर्ण"। – Lazarus535