C++ vector之创建二维数组

头文件:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

申明二维数组:

vector<vector<int>>vec;//嵌套申明

此时的vec.size为0,空有其名,没有空间大小,并不能用来访问元素,此时可以向vec中添加一维向量
方案一:

vec.push_back(vector<int>());

vector()的()中可以添加参数vector(m,n),其中m为一维向量的大小,默认为0,n为一维向量中的元素,默认为0.
方案二:

vec.resize(1);

vec.resize()有两个参数(m,n),m为vec的大小,n为vector(),也就是申明vec时vector<>vec中尖括号之间的东西。
到此我们也可看出,vector二维数组其实就是一个嵌套,因此我们也可以这样理解:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#define type vector < int >
#define type_size 6     //大小自定
#define type_value 3    //大小自定
#define vec_size 6      //大小自定
#define vec_value type(type_size,type_value)//参数可不要
int main()
{
    vector<type> vec(vec_size,vec_value);//申明二维向量,vec_size指定大小,vec_value指定初始值,两参数默认为0,都可不要
    vec.push_back(vec_value);            //添加一个一维向量
    vec.resize(vec_size, vec_value);     //重新指定二维向量的大小,不足的用vec_vauet(一维向量)填充
    return 0;
}

例如:
申明一个m*n的二维数组并初始化为0

vector<vector<int>>vec(m,vector<int>(n,0));    //m*n的二维vector,所有元素为0
### 如何在C++中使用`std::vector`创建二维数组C++中,可以利用标准库中的`std::vector`来实现动态大小的多维数组。对于二维数组而言,可以通过嵌套两个`std::vector`实例来完成这一目标。 以下是具体方法: #### 方法一:通过初始化列表构建二维向量 可以直接指定每一行的内容并将其作为初始值传递给外层`std::vector`[^1]。 ```cpp #include <iostream> #include <vector> int main() { std::vector<std::vector<int>> matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; for (const auto& row : matrix) { for (int elem : row) { std::cout << elem << " "; } std::cout << "\n"; } return 0; } ``` 上述代码展示了如何定义一个3×3矩阵,并逐行列举其元素。 #### 方法二:预先分配空间 如果已知所需维度,则可先设置好容量再赋值。这有助于提高性能以及减少内存重新分配次数[^1]。 ```cpp #include <iostream> #include <vector> int main() { size_t rows = 3, cols = 4; // 创建具有固定尺寸的二维向量,默认填充为零 std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols, 0)); // 填充数据到matrix int val = 1; for(size_t i=0; i<rows; ++i){ for(size_t j=0; j<cols; ++j){ matrix[i][j] = val++; } } // 打印结果 for(const auto& row : matrix){ for(int elem : row){ std::cout << elem << ' '; } std::cout << '\n'; } return 0; } ``` 此版本首先声明了一个拥有特定数量行与列的空矩阵,随后逐步填充值[^1]。 #### 方法三:基于输入动态调整大小 当确切规模未知时,可以根据运行期间获得的信息灵活改变结构大小[^1]。 ```cpp #include <iostream> #include <vector> int main(){ int n,m; std::cin >> n >> m; std::vector<std::vector<int>> mat(n,std::vector<int>(m)); for(auto &row:mat){ for(auto &elem:row){ std::cin>>elem; } } return 0; } ``` 这里演示了读取用户提供的参数以决定最终布局的过程[^1]。 相关问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值