में 2 डी सरणी के रूप में 1 डी सरणी तक पहुंचें इसने मुझे थोड़ी देर तक परेशान किया है। कई बार मैं खुद को "अधिकतम" डेटा रखने के लिए एक बड़ा बफर बना रहा हूं। यह मुझे अगले डेटा सेट के आकार में प्रत्येक बार गतिशील रूप से आवंटित करने और एक बफर को हटाने से बचने में मदद करता है।सी ++
उदाहरण के लिए कहें कि मेरे पास एक सरणी है जो अपने वास्तविक उपयोगी आकार के लिए बहुत बड़ी है, लेकिन मुझे उपयोगी डेटा की लंबाई पता है।
int amountOfData = 9;
char data1D[100] = some data that is only 9 bytes long stored in a 100 byte array
आइए कहें कि मेरे पास एक एल्गोरिदम है जो मैं इस डेटा सेट पर चलाना चाहता हूं जो 2 डी सर इंडेक्सिंग का उपयोग करता है। इसलिए मैं डेटा का उपयोग करने में सक्षम होने के रूप में निम्नानुसार हैं:
int xlength = 3;
int ylength = 3;
इस के लिए
:
cout << "I am accessing this data as a 2D array: " << data1D[0][1] << endl;
इस एल्गोरिथ्म के लिए कहते हैं कि मुझे पता है कि xlength और 2 डी सरणी के ylength होने जा रहे हैं की सुविधा देता है पुनरावृत्ति, क्योंकि amountOfData = 9
। हालांकि, अगले पुनरावृत्ति के लिए लंबाई अलग हो सकती है। अर्थात। वे xlength = 4
और ylength = 4
amountOfData = 16
दिए जा सकते हैं।
मैं कुछ प्रकार का कास्टिंग करना चाहता हूं जो मुझे 2 डी सरणी का उपयोग करके 1 डी सरणी डालने की अनुमति देता है। मुझे पता है कि मेरी शुरुआती 1 डी लंबाई कितनी देर तक है, जो मुझे बताती है कि मेरे 2 डी xlength
और ylength
कितने समय तक हैं, इसलिए new
या malloc
का उपयोग किये बिना यह करना आसान होना चाहिए जब तक प्रारंभिक 100 बाइट्स किसी भी उपयोगी डेटा सेट को पकड़ने के लिए पर्याप्त नहीं हैं मेरे लिए।
मुझे लगता है कि:
char** data2d = (char**) data1D;
क्योंकि संकलक दूसरे आयाम के आकार पता नहीं है काम नहीं करेगा। लेकिन मुझे पता चलेगा कि रनटाइम पर क्या है!
इस तरह के लिए इसका मूल कारण क्या है? क्या कोई कामकाज है? क्या मुझे कुछ याद आ रही है?
[वैक्टर] पर गौर करें (http://en.cppreference.com/w/cpp/container/vector)। –
डेटा 1 डी में आप किस प्रकार के प्रकार का उपयोग करने की उम्मीद कर रहे हैं? – Amadeus
@ टोमास बदन मैंने 'char' उदाहरणों के रूप में उपयोग किया, लेकिन इस समस्या का एक विशिष्ट मामला आज उठ गया जब मैं 'हस्ताक्षरित चार' की एक डीडी सरणी को 'हस्ताक्षरित शॉर्ट' के 2 डी सरणी के रूप में एक्सेस करना चाहता था। 1 डी सरणी मालिकाना कैमरा सॉफ्टवेयर से बाहर थूक गया था। मैं परिणामी छवि को 2 डी पिक्सेल डेटा के रूप में एक्सेस करना चाहता हूं। – dinkelk