You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++二维vector的指定位置使用insert()插入元素?

二维vector的insert()用法及常见误区

首先明确:C++的vector是0起始索引,也就是第一行的索引是0,第一列的索引也是0。你的示例中,目标位置是第三行、第四列,对应正确的索引是行索引2,列索引3;而你代码里的x=4超出了初始4行的索引范围(0-3),会导致错误。

两种场景的解决方案

场景1:确实需要插入元素(该行元素数量增加)

insert()的作用是在指定位置插入新元素,会让容器的大小+1。如果你要在某行的指定列插入1,需要先获取该行的一维vector,再调用它的insert方法,参数是插入位置的迭代器和要插入的值。

示例代码:

#include <vector>
using namespace std;

int main() {
    // 初始化4行5列的二维vector,所有元素为0
    vector<vector<int>> board(4, vector<int>(5, 0));
    int target_row = 2; // 对应第三行(0起始索引)
    int target_col = 3; // 对应第四列(0起始索引)
    
    // 在目标行的目标列位置插入1
    board[target_row].insert(board[target_row].begin() + target_col, 1);
    
    // 此时该行元素变为:0 0 0 1 0 0(从5个元素变为6个)
    return 0;
}

场景2:实际是想替换指定位置的值(更符合你的示例需求)

你的目标结果中该行元素数量没有变化,这说明你其实是想替换该位置的0为1,这种情况不需要用insert(),直接通过索引赋值即可:

示例代码:

#include <vector>
using namespace std;

int main() {
    vector<vector<int>> board(4, vector<int>(5, 0));
    int target_row = 2;
    int target_col = 3;
    
    // 直接替换目标位置的值为1
    board[target_row][target_col] = 1;
    
    // 此时该行元素为:0 0 0 1 0,和你的示例目标一致
    return 0;
}

内容的提问来源于stack exchange,提问作者Shamil Magomedov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:15:39