/ / सी ++ - सी ++, सरणी, पॉइंटर्स में निरंतर मानों के साथ एक मैट्रिक्स लौट रहा है

सी ++ - सी ++, सरणी, पॉइंटर्स में निरंतर मानों के साथ एक मैट्रिक्स लौट रहा है

मैं फ़ंक्शन से निरंतर मानों की 2 डी सरणी कैसे वापस कर सकता हूं? मुझे ऐसा कुछ वापस करने की ज़रूरत है:

//I don"t even know if this is the best way to do 2d arrays in c++.
const int matrix[4][2] = {
{10,11},
{12,13},
{14,15},
{16,17}
};

यहां मैंने जो कोशिश की:

#include <iostream>

using namespace std;

int** createMatrix();

int main(){
int **m = createMatrix();
return 0;
}

const int** createMatrix(){
const int **matrix = new const int*[4];

matrix[0] = new const int[2] = {10,11};
matrix[1] = new const int[2] = {12,13};
matrix[2] = new const int[2] = {14,15};
matrix[3] = new const int[2] = {16,17};

return matrix;
}

आउटपुट मुझे मिला:

main.cpp: फंक्शन 'कॉन्स int ** createMatrix ()' में: main.cpp: 12: 13: त्रुटि: 'const int ** newMatrix ()' की नई घोषणा को अस्पष्ट करना const int ** createMatrix () { ^ ~~~~~~~~~~~

main.cpp: 5: 7: नोट: पुरानी घोषणा 'int ** createMatrix ()' int ** createMatrix (); ^ ~~~~~~~~~~~

main.cpp: 15: 2 9: त्रुटि: 'const' के 'new' में uninitialized const ' मैट्रिक्स [0] = नया कॉन्स int [2] = {10,11}; ^

main.cpp: 16: 2 9: त्रुटि: 'const' के 'new' में uninitialized const ' मैट्रिक्स [1] = नया कॉन्स int [2] = {12,13}; ^

main.cpp: 17: 2 9: त्रुटि: 'const' के 'new' में uninitialized const ' मैट्रिक्स [2] = नया कॉन्स int [2] = {14,15}; ^

main.cpp: 18: 2 9: त्रुटि: 'const' के 'new' में uninitialized const ' मैट्रिक्स [3] = नया कॉन्स int [2] = {16,17};

उत्तर:

जवाब के लिए 0 № 1

फ़ंक्शन घोषणा और फ़ंक्शन परिभाषा में अलग-अलग रिटर्न प्रकार होते हैं।

int** createMatrix();

तथा

const int** createMatrix(){

इस तरह की शुरुआत भी

matrix[0] = new const int[2] = {10,11};

गलत है।

ऐसा लगता है कि आप निम्नलिखित का मतलब है

#include <iostream>

const int** createMatrix();

int main()
{
const int **m = createMatrix();
return 0;
}

const int ** createMatrix()
{
const int **matrix = new const int*[4];

matrix[0] = new const int[2] {10,11};
matrix[1] = new const int[2] {12,13};
matrix[2] = new const int[2] {14,15};
matrix[3] = new const int[2] {16,17};

return matrix;
}

जवाब के लिए 2 № 2

सरल समाधान, सरणी की सरणी बनाना है, जैसे कि आप पहले दिखाते हैं, और उसे वापस कर देते हैं।

इसे बनाओ static समारोह के अंदर तो उसका जीवनकाल समाप्त नहीं होगा। और सही प्रकार को वापस करना याद रखें (सरणी की सरणी एक सूचक के लिए सूचक के समान नहीं है)।

वैकल्पिक रूप से उपयोग करें std::array सादे सी-शैली सरणी के बजाय।

यदि आकार रन-टाइम पर कॉन्फ़िगर करने योग्य है तो इसका उपयोग करें std::vector.


जवाब के लिए 0 № 3

आपको इसे 1 डी सरणी (xsize * ysize) के रूप में सहेजने पर विचार करना चाहिए, कथित रूप से, 2 डी सरणी बचाने से बेहतर है।