动态开辟二维数组vector
时间: 2023-09-30 14:02:56 浏览: 108
动态开辟二维数组可以使用vector容器来实现,具体代码如下:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
// 定义二维vector并初始化为0
vector<vector<int>> v(n, vector<int>(m, 0));
// 给某个元素赋值
v[0][0] = 1;
// 输出二维vector
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << v[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
上述代码中,首先通过输入n和m确定二维vector的行数和列数。然后使用vector容器定义一个二维vector,并初始化为0。接着可以通过v[i][j]来访问某个元素,并进行赋值。最后使用两层循环输出二维vector的元素。
相关问题
怎么定义一个动态二维数组C++
### 动态二维数组的定义与初始化
在C++中,动态分配内存对于创建大小不固定的二维数组非常有用。这可以通过`new`运算符来实现,它允许程序运行时决定所需的空间量。
为了创建一个动态二维数组,先声明指向指针类型的指针变量,接着利用双重循环结构或向量化操作完成行和列空间的开辟以及数据填充工作[^1]。
#### 使用 `new` 运算符定义并初始化动态二维数组
当已知行列数目时:
```cpp
#include <iostream>
int main() {
int rows = 3;
int cols = 4;
// 创建动态二维数组
int **array = new int*[rows];
for (int i = 0; i < rows; ++i) {
array[i] = new int[cols]{};
}
// 初始化数值
for(int i=0;i<rows;++i){
for(int j=0;j<cols;++j){
array[i][j]=(i*cols)+j+1;
}
}
// 输出验证
for(int i=0;i<rows;++i){
for(int j=0;j<cols;++j){
std::cout<<array[i][j]<<" ";
}
std::cout<<"\n";
}
// 清理资源
for (int i = 0; i < rows; ++i) delete[] array[i];
delete[] array;
return 0;
}
```
如果希望简化管理或是更高效地处理大型矩阵,则推荐采用标准模板库(STL),比如`std::vector<std::vector<int>>`容器来代替原始指针形式构建动态二维数组[^2]。
#### 利用 STL 向量定义并初始化动态二维数组
这种方法不仅能够自动调整尺寸而且提供了更好的安全性保障:
```cpp
#include <iostream>
#include <vector>
int main(){
const size_t rowSize = 3, colSize = 4;
// 声明并初始化
std::vector<std::vector<int>> matrix(rowSize, std::vector<int>(colSize));
// 赋值过程
for(size_t r = 0 ;r < rowSize;r++){
for(size_t c = 0;c < colSize;c++){
matrix[r][c]=static_cast<int>(r * colSize + c + 1);
}
}
// 展示结果
for(const auto& row : matrix){
for(int elem : row){
std::cout << elem << " ";
}
std::cout << "\n";
}
return 0;
}
```
动态开辟M*N维数组
动态开辟一个多维度数组,通常是在内存管理中用于处理大小未知或者需要根据运行时数据动态调整的数组。这种操作常见于一些语言如C++、Python或Java中,特别是当使用指针或列表推导式时。
例如,在C++中,可以使用`std::vector`作为动态数组的基础,它可以自动调整大小,类似于动态数组:
```cpp
#include <vector>
int rows, cols;
// 获取用户输入的行数和列数
std::cin >> rows >> cols;
// 创建一个动态二维数组
std::vector<std::vector<int>> dynamicArray(rows, std::vector<int>(cols, 0));
```
在这个例子中,`dynamicArray`是一个动态分配的二维数组,其大小可以根据`rows`和`cols`的变化而改变。
在Python中,可以使用嵌套列表来创建类似的效果:
```python
rows = int(input("Enter number of rows: "))
cols = int(input("Enter number of columns: "))
# 创建动态二维列表
dynamic_array = [[0] * cols for _ in range(rows)]
```
这里也通过列表推导实现了动态初始化。
阅读全文
相关推荐













