Multidimensional Arrays
Row-major matrix traverse कर row totals निकालें।
Multidimensional Arrays क्या है?
Built-in 2D array दोनों भाषाओं में row-wise contiguous होता है।
महत्वपूर्ण बातें
- Pointer किसी जीवित compatible object को point करे या null हो।
- हर owned allocation को ठीक एक बार release करें।
- Ownership और const interfaces स्पष्ट रखें।
देखें यह कैसे काम करता है
किसी खाने पर पॉइंटर ले जाएँ और उसकी पंक्ति, कॉलम और मेमोरी में जगह देखें, जहाँ सभी पंक्तियाँ एक के बाद एक रखी जाती हैं।
C और C++ code examples
#include <stdio.h>
int main(void) {
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int row = 0; row < 2; ++row) {
int total = 0;
for (int column = 0; column < 3; ++column) total += matrix[row][column];
printf("row %d=%d\n", row, total);
}
return 0;
}
row 0=6
row 1=15
#include <array>
#include <iostream>
int main() {
std::array<std::array<int, 3>, 2> matrix{{{{1, 2, 3}}, {{4, 5, 6}}}};
for (std::size_t row = 0; row < matrix.size(); ++row) {
int total = 0;
for (int value : matrix[row]) total += value;
std::cout << "row " << row << '=' << total << '\n';
}
}
row 0=6
row 1=15
C और C++ की तुलना
C function को पहली छोड़कर dimensions जाननी होती हैं; std::array dimensions type में रखता और at देता है।
Ownership और cleanup programmer द्वारा लागू conventions हैं।
Containers और RAII ownership को object lifetime से जोड़ते हैं।
अभ्यास
दोनों versions चलाकर बदलें और language guarantees की तुलना करें।
- Null और allocation failure paths test करें।
- AddressSanitizer और UndefinedBehaviorSanitizer चलाएँ।
- हर pointer का ownership लिखें।
चैलेंज से अभ्यास करें
इस पाठ में सीखी बात से एक असली समस्या हल करें। हर चैलेंज ब्राउज़र में चलता है, तुरंत टेस्ट और AI रिव्यू के साथ।
- Row Sums Add up every row of a grid. आसान
- माइन्सवीपर पड़ोसी गणना आयताकार बोर्ड को एनोटेट करें। मध्यम