c++动态生成二维数组
时间: 2023-11-30 12:40:10 浏览: 77
在C++中,可以使用vector来动态生成二维数组。以下是两种常见的方法:
方法一:使用vector嵌套vector的方式创建二维数组。示例代码如下:
```c++
#include <vector>
#include <iostream>
using namespace std;
int n = 3, m = 4; // 定义行和列
vector<vector<int>> arr(n, vector<int>(m, 0)); // 创建二维数组,初始化所有元素为0
```
方法二:将二维数组看成特殊的一维数组,使用vector嵌套vector的方式创建二维数组。示例代码如下:
```c++
#include <vector>
#include <iostream>
using namespace std;
int rows = 3; //行数
int cols = 4; //列数
//创建一个有rows行的二维数组array
vector<vector<int>> array(rows);
//设置每一行的元素个数
for (int i = 0; i < rows; i++) {
array[i].resize(cols);
}
//赋值
array = { {1,4,3,5}, {1,4,7,8} , {1,3,5,6} };
//输出
for(auto p : array)
cout<<p[0]<<' '<<p[1]<<' '<<p[2]<<' '<<p[3]<<endl;
```
相关问题
c++随机生成二维数组
以下是使用C++随机生成二维数组的示例代码:
```c++
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int** generateRandomArray(int n, int m) {
int** arr = new int*[n];
srand((unsigned)time(NULL));
for (int i = 0; i < n; i++) {
arr[i] = new int[m];
for (int j = 0; j < m; j++) {
arr[i][j] = (rand() % 900) + 100;
}
}
return arr;
}
void printArray(int** arr, int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int main() {
int n, m;
cin >> n >> m;
int** arr = generateRandomArray(n, m);
printArray(arr, n, m);
return 0;
}
```
C++动态生成二维类数组
在C++中动态生成二维类数组,可以使用指针数组的方式来实现。具体操作如下:
```c++
class MyClass {
public:
MyClass() {}
~MyClass() {}
// 其他类成员函数
private:
int value;
};
int row = 5; // 行数
int col = 4; // 列数
// 动态分配一个指针数组,每个指针指向一维MyClass数组
MyClass **arr = new MyClass*[row];
// 动态分配每个一维数组
for (int i = 0; i < row; i++) {
arr[i] = new MyClass[col];
}
// 对二维数组进行赋值操作
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j].setValue(i * col + j);
}
}
// 访问二维数组中的元素
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << arr[i][j].getValue() << " ";
}
cout << endl;
}
// 释放内存
for (int i = 0; i < row; i++) {
delete[] arr[i];
}
delete[] arr;
```
以上代码中,我们首先定义了一个 `MyClass` 类,然后动态分配一个指针数组 `arr`,其大小为 `row`,每个指针指向一个一维 `MyClass` 数组。然后我们再动态分配每个一维数组,其大小为 `col`。最后可以对二维数组进行赋值和访问操作,记得在使用完毕后释放内存。注意在类成员函数中,我们需要定义 `setValue` 和 `getValue` 函数来对 `value` 成员变量进行赋值和访问。