create2dArray.h
#pragma once
#include <stddef.h>
#include <exception>
#include <iostream>
using namespace std;
template <typename T>
bool make2dArray(T **&ptr, size_t row, size_t col) {
try {
ptr = new T* [row];
for (size_t i = 0; i < row; ++i) {
ptr[i] = new T[col];
}
return true;
} catch (bad_alloc e) {
cout << e.what() << endl;
return false;
}
}
template <typename T>
void print(T **arr, size_t row, size_t col) {
for (size_t i = 0; i < row; ++i) {
std::cout << "Print an row: " << std::endl;
for (size_t j = 0; j < col; ++j) {
std::cout << "Print a col: " << std::endl;
std::cout << arr[i][j] << " " << std::endl;
}
std::cout << std::endl;
}
}
template <typename T>
void delete2dArray(T **ptr, size_t row) {
for (size_t i = 0; i < row; ++i) {
delete [] ptr[i];
}
delete [] ptr;
ptr = nullptr;
}```
main.cpp
```cpp
#include "create2dArray.h"
int main() {
int **p = nullptr;
size_t row, col;
cout << "Enter the row and col" << endl;
cin >> row >> col;
if (make2dArray(p, row, col)) {
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
p[i][j] = j;
}
}
print(p, row, col);
}
delete2dArray(p, row);
return 0;
}
Enter the row and col
3
3
Print an row:
Print a col:
0
Print a col:
1
Print a col:
2
Print an row:
Print a col:
0
Print a col:
1
Print a col:
2
Print an row:
Print a col:
0
Print a col:
1
Print a col:
2