में गतिशील दो आयामी सरणी आरंभ करने के लिए मेमसेट या fill_n का उपयोग कैसे करें मेरे पास 2 डी सरणी गतिशील रूप से बनाई गई है।सी ++
int **abc = new int*[rows];
for (uint32_t i = 0; i < rows; i++)
{
abc[i] = new int[cols];
}
मैं सरणी को कुछ मूल्य (1 कहें) भरना चाहता हूं। मैं प्रत्येक आइटम पर लूप कर सकता हूं और इसे कर सकता हूं।
लेकिन क्या कोई आसान तरीका है। मैं और std::fill_n
का उपयोग करने की कोशिश कर रहा हूं जैसा कि this post में उल्लिखित है।
std::fill_n(abc, rows * cols, 1);
memset(abc, 1, rows * cols * sizeof(int));
मेमसेट का उपयोग करना मेरे प्रोग्राम को क्रैश करता है। Fill_n का उपयोग एक संकलन त्रुटि देता है।
invalid conversion from 'int' to 'int*' [-fpermissive]
मैं यहां क्या गलत कर रहा हूं?
वापस सेल्सियस तक गिराने के लिए एक विकल्प हो सकता है: 'int (* abc) [cols] = malloc (पंक्तियां * आकार (* एबीसी)); मेमसेट (एबीसी, 1, पंक्तियां * आकार (* एबीसी)); सी 99 के बाद से कानूनी सी है, लेकिन जल्द ही सी ++ में संभव नहीं होगा। – cmaster