2010-12-29 10 views
6

में गतिशील रूप से द्वि-आयामी सरणी बना रहा है, मैं निरंतर मेमोरी ब्लॉक में 2 डी सरणी बनाने की कोशिश कर रहा था, लेकिन यह एम निरंतर ब्लॉक, प्रत्येक आकार के प्रत्येक को प्रदान कर रहा है।निरंतर मेमोरी ब्लॉक

int **arr = new int*[M]; 
for (int i = 0 ; i < M ; i++) 
{ 
    arr[i] = new int[N]; 
} 

निरंतर मेमोरी ब्लॉक में 2 डी सरणी कैसे बनाएं?

+4

** कृपया ** इसे स्वयं न करें। बूस्ट :: multi_array का प्रयोग करें। –

+5

हाँ, कुछ नया नहीं सीखें, बस बंदर की तरह कोड, कृपया। – bartimar

उत्तर

13
int *buffer=new int[M*N]; 
int **arr=new int*[M]; 
for(int i=0;i<M;++i) 
    arr[i]=buffer+i*N; 

वास्तव में एआर पॉइंटर्स को स्टोर करना आवश्यक नहीं है - जब आवश्यक हो तो उनकी गणना की जा सकती है।

+1

क्या यह दृष्टिकोण काम करेगा यदि कोई वर्ग की वस्तु का सरणी बनाना चाहता है? – Nawaz

+1

मुझे कोई समस्या नहीं दिख रही है। रचनाकारों को एक बार बुलाया जाता है। – maxim1000

+1

यूप। मैंने गौर किया। वैसे, मैं सोच रहा था, क्या हम इसे गैर-डिफ़ॉल्ट कन्स्ट्रक्टर के लिए काम कर सकते हैं, जहां सरणी में प्रत्येक ऑब्जेक्ट को विभिन्न मानों के साथ प्रारंभ किया जाना चाहिए? – Nawaz

संबंधित मुद्दे