question on arrays in c++ -


इस तरह के सरणी का अन्तर जावा घोषणा int a [] [] = नया int [3] [3] < / कोड> काम करता है लेकिन सी ++ क्यों नहीं? कृपया मेरी मदद करें, मैंने सी ++ का उपयोग लंबे समय से नहीं किया है, कृपया मेरी मदद करें

मुझे एक बार एक ही समस्या थी और इसके लिए एक क्लास का निर्माण समाप्त हुआ असल में इसे एकल आयाम सरणी के एक सूचक के रूप में संग्रहीत किया जाता है और पॉइंटर्स थोड़ी-बहुत छेड़छाड़ किए जाते हैं ताकि यह 2 डी सरणी (मैट्रिक्स) की तरह काम करता हो। यहां मैंने उपयोग किया हुआ कोड है:

  #include & lt; उपयोगिता & gt; # शामिल करें & lt; memory.h & gt; टेम्पलेट & lt; typename T & gt; कक्षा मैट्रिक्स {सुरक्षित: टी ** मी; Int x, y; __ फोर्सिनलाइन शून्य सेट मैट्रिक्स () {जोर देना (एक्स & gt; 0); ज़ोर देना (y & gt; 0); एम = नया टी * [या]; मी [0] = नया टी [x * y]; के लिए (int i = 1; i & lt; y; ++ i) {मी [i] = मी [i-1] + x; }} सार्वजनिक: मैट्रिक्स (): एम (0), एक्स (0), वाई (0) {} मैट्रिक्स (इंट पंक्ति, इंट कोल्स): x (कॉलम), वाई (पंक्तियाँ), एम (0) {सेट मैट्रिक्स ( ); } मैट्रिक्स (कॉन्स्ट मैट्रिक्स & lt; T & gt; & amp; चटाई): एम (0), एक्स (मैट। X), वाई (मैट।) {सेट मैट्रिक्स (); Memcpy_s (मी [0], एक्स * वाई, मैट [0], एक्स * वाई); } ~ मैट्रिक्स () {if (मी) {हटाएं] [मी] [0]; हटाएं [] मी; }} शून्य भर (const T & amp); {if (m) {for (int j = 0; j & lt; y; ++ j) के लिए (int i = 0; i & lt; x; ++ i) मी [ J] [i] = val; }} टी एंड amp; (इंट पंक्ति, इंट कोल्स) पर {जोर (पंक्ति & gt; = 0 & amp; amp;; & amp;; पंक्ति & lt; y); ज़ोर देना (कॉल एंड;; = 0 & amp; amp; & amp;; & lt; x;); वापसी मी [पंक्ति] [कोला]; } कॉन्स्ट टी एंड amp; पर (इंट पंक्ति, इंट कोले) कॉन्स्ट {जोर (पंक्ति & gt; = 0 & amp; amp; और & amp;; पंक्ति & lt; y); ज़ोर देना (कॉल एंड;; = 0 & amp; amp; & amp;; & lt; x;); वापसी मी [पंक्ति] [कोला]; } टी * ऑपरेटर [] (इंट पंक्ति) {जोर (पंक्ति & gt; = 0 & amp; amp; & amp;; पंक्ति & lt; y); वापसी मी [पंक्ति]; } Const T * ऑपरेटर [] (int पंक्ति) const {जोर (पंक्ति & gt; = 0 & amp; amp; & amp;; पंक्ति & lt; y); मीटर [पंक्ति]; } टी एंड amp; ऑपरेटर () (इंट पंक्ति, इंट कोल) {जोर (पंक्ति & gt; = 0 & amp; amp; और & amp;; पंक्ति & lt; y); ज़ोर देना (कॉल एंड;; = 0 & amp; amp; & amp;; & lt; x;); वापसी मी [पंक्ति] [कोला]; } कॉन्स्ट टी एंड amp; ऑपरेटर () (इंट पंक्ति, इंट कोले) कॉन्स्ट {जोर (पंक्ति & gt; = 0 & amp; amp;; & amp;; पंक्ति & lt; y); ज़ोर देना (कॉल एंड;; = 0 & amp; amp; & amp;; & lt; x;); वापसी मी [पंक्ति] [कोला]; } शून्य स्वैप (मैट्रिक्स & lt; T & gt; & amp; चटाई) {std :: swap (m, mat.m); Std :: swap (x, mat.x); Std :: swap (y, mat.y); } कॉन्स्ट मैट्रिक्स & amp; ऑपरेटर = (कॉन्स्ट मैट्रिक्स & lt; T & gt; & amp; rhs) {मैट्रिक्स तालक (rhs); स्वैप (अस्थायी); वापसी * ​​यह; } // int getRows () const {return y; } Int getColumns () const {return x; }};  

उपयोग निम्न होगा:

  टाइप-एफ़ मैट्रिक्स & lt; int & gt; IntMatrix; इंटमैट्रिक्स चटाई (2,3); // पूर्णांकियों को संग्रहीत करने के लिए 2x3 मैट्रिक्स बनाता है mat.fill (0); // शून्य के साथ इसे भरें इंट वैल 2 = चटाई [0] [2]; // मूल्यों को पुनः प्राप्त करने के लिए असुरक्षित तरीके val12 = चटाई (1,2); // मूल्यों को पुनः प्राप्त करने के लिए सुरक्षित तरीका; चटाई (0,1) = 10; // मैट्रिक्स के लिए सीधे मूल्यों को असाइन करें  

आप इस वर्ग को भी बढ़ा सकते हैं ताकि इसमें अन्य मैट्रिक्स संबंधित फ़ंक्शन हो।


Comments