二维vector定义

定义空二维vector,再赋值
vector<vector <int> > ivec(m ,vector<int>(n)); //m*n的二维vector,注意两个 "> "之间要有空格!
<think>我们需要定义一个二维vector,并指定其行数和列数(以及初始值,如果需要的话) 在C++中,我们可以使用vector的构造函数来实现。 例如,定义一个row行col列的二维vector,初始值为0: vector<vector<int>> vec(row, vector<int>(col, 0)); 如果不指定初始值,可以省略初始值参数: vector<vector<int>> vec(row, vector<int>(col)); 也可以先定义一维vector,然后通过循环逐行添加(更灵活,但更繁琐)。 注意:二维vector实际上是一个vector的每个元素又是一个vector(即向量嵌套)。 下面是一个具体的示例代码:</think>### 二维vector定义大小的方法 在C++中,定义具有固定大小的二维`vector`主要有以下两种方法: #### 方法1:构造函数初始化 ```cpp #include <vector> using namespace std; int main() { int rows = 3, cols = 4; // 3行4列 // 定义并初始化所有元素为0 vector<vector<int>> matrix(rows, vector<int>(cols, 0)); // 示例:修改第2行第3列的值 matrix[1][2] = 5; return 0; } ``` - **语法**:`vector<vector<T>> 名称(行数, vector<T>(列数, 初始值))` - **特点**:一次性完成内存分配 #### 方法2:循环初始化 ```cpp #include <vector> using namespace std; int main() { int rows = 5, cols = 2; // 先定义行数 vector<vector<double>> data(rows); // 为每行分配列数 for (int i = 0; i < rows; ++i) { data[i] = vector<double>(cols); // 默认初始化为0.0 // 或指定初始值: data[i] = vector<double>(cols, 1.5); } return 0; } ``` - **适用场景**:当各行大小不同时(锯齿数组) #### 特殊情形:空二维vector ```cpp vector<vector<string>> empty2D; // 零行零列 ``` #### 注意事项: 1. **内存连续性**:二维vector各行内存独立,不保证连续 2. **访问效率**:`vector`比原生数组多一层间接寻址 3. **动态调整**:可随时用`resize()`改变维度 ```cpp matrix.resize(10, vector<int>(8)); // 调整为10行8列 ``` ### 性能对比(vs原生数组) | 操作 | 二维vector | 原生二维数组 | |---------------|----------------|------------------| | 定义大小 | 运行时动态指定 | 编译时固定 | | 内存管理 | 自动 | 手动 | | 越界访问 | 抛出异常 | 未定义行为 | | 传递函数参数 | 直接传递 | 需指定第二维大小 | > **推荐场景**:优先使用vector,除非需要极致性能或内存控制
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值