📅  最后修改于: 2023-12-03 15:36:24.009000             🧑  作者: Mango
在 C++ 中传递二维数组有多种方法,可以使用指针和动态内存分配,也可以使用 STL 容器类和模板参数来传递。这篇文章将介绍两种常用的方法。
在 C++ 中,通过定义指向指针的指针来表示二维数组。定义时需要使用 * 来指定指针类型。动态内存分配可通过 new
和 delete
关键字来进行。下面是一个示例代码:
void print_array(int **arr, int row, int col) {
for(int i=0; i<row; i++) {
for(int j=0; j<col; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int main() {
int row = 3, col = 4;
int **arr = new int*[row];
for(int i=0; i<row; i++) {
arr[i] = new int[col];
for(int j=0; j<col; j++) {
arr[i][j] = j + i * col;
}
}
print_array(arr, row, col);
for(int i=0; i<row; i++) {
delete [] arr[i];
}
delete [] arr;
return 0;
}
在这个示例中,在 main 函数中使用了 new
关键字来为二维数组分配内存。第一行 int **arr = new int*[row]
,分配了一个指针数组,其中每个指针都指向一个整型数组。在循环体内使用 new
再为每个指针指向的数组分配内存。
最后需要注意的是要在不再需要使用二维数组时使用 delete
关键字释放内存。首先需要用循环释放指向的每个一维数组,再释放指向这些数组的指针数组。
STL 中的 vector
容器类可以动态存储数据,并且通过 vector 的嵌套使用,可以方便地表示二维及以上维度的数组。通常情况下,我们使用二维 vector 来表示二维数组。
下面是一个使用二维 vector 表示二维数组的示例代码:
void print_array(vector<vector<int>> arr) {
for(int i=0; i<arr.size(); i++) {
for(int j=0; j<arr[0].size(); j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int main() {
int row = 3, col = 4;
vector<vector<int>> arr(row, vector<int>(col));
for(int i=0; i<row; ++i) {
for(int j=0; j<col; ++j) {
arr[i][j] = j + i * col;
}
}
print_array(arr)
return 0;
}
在这个示例中,我们分配了一个二维 vector 型的 container,即 vector<vector<int>> arr(row, vector<int>(col))
它表示 row 行 col 列的数组,每个元素都是一个 int 类型。
最后需要注意的是,使用 vector 容器类时,不需要手动释放内存。vector 自己会管理内存,那么可以加快编程的速度,避免内存泄漏。
通过上述两种方式,你已经学会了在 C++ 中传递二维数组的方法。使用指针和动态内存分配可以实现灵活的内存控制,而使用 vector 则可以简化编程操作,使代码更具可读性和可维护性。在具体开发中,应根据情况选择适合的方法。