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

二维Vector指定位置插整数及对应元素相加异常求助

二维vector相关问题的解决方案

问题1:怎么在二维vector的指定位置插入整数?

这个得分两种常见场景来处理,看你是要给某一行插入单个元素,还是插入一整行:

  • 给指定行的指定列插入单个元素:
    假设你有个二维vector叫mat,想在第row行(从0开始计数)的第col列插入整数val,直接调用该行的insert方法即可,记得先确认目标行是存在的:

    // 先判断row是否在合法范围内
    if (row >= 0 && row < mat.size()) {
        mat[row].insert(mat[row].begin() + col, val);
    }
    

    这里begin()+col是指向第col个位置的迭代器,插入完成后,该位置及后续的元素会自动向后移位。

  • 插入一整行到指定位置:
    如果要插入一整行(比如准备了一行vector<int> new_row = {1,2,3})到第row行的位置,直接调用二维vector的insert方法就行:

    mat.insert(mat.begin() + row, new_row);
    

问题2:二维vector对应位置相加结果不符合预期的问题

我看了你贴的代码,问题出在两个容易忽略的小细节上:

  1. 循环的行和列搞反了:
    你外层循环遍历的是FirstMatrix[0].size()(也就是列数),内层循环遍历的是FirstMatrix.size()(行数),但访问元素时用的是FirstMatrix[i][z],这相当于把列索引当行用、行索引当列用,不仅可能触发越界,还会把元素取混,自然得不到正确结果。

  2. FinalMatrix没有预先分配空间:
    你一开始定义的FinalMatrix是空的,既没有行,每行也没有对应的列空间,直接给FinalMatrix[i][z]赋值属于访问不存在的内存,会导致未定义行为(比如程序崩溃或者输出乱码)。

给你改好的可运行代码:

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

int main() {
    vector<vector<int>> FirstMatrix = { {2, 3} , {3, 1} };
    vector<vector<int>> SecondMatrix = { {2, 3} , {3, 1} };
    vector<vector<int>> FinalMatrix;

    // 先给FinalMatrix分配和输入矩阵一致的空间
    FinalMatrix.resize(FirstMatrix.size());
    for (int i = 0; i < FirstMatrix.size(); i++) {
        FinalMatrix[i].resize(FirstMatrix[i].size());
    }

    // 正确遍历:外层走行,内层走列
    for(int i = 0; i < FirstMatrix.size(); i++) {
        for(int z = 0; z < FirstMatrix[i].size(); z++) {
            int VectorNum = FirstMatrix[i][z] + SecondMatrix[i][z];
            FinalMatrix[i][z] = VectorNum;
        }
    }

    // 验证结果的输出代码
    for (auto &row : FinalMatrix) {
        for (int num : row) {
            cout << num << " ";
        }
        cout << endl;
    }
    return 0;
}

这段代码里,我先通过resize给FinalMatrix分配了和输入矩阵匹配的行数与列数,再调整了循环顺序,运行后就能得到你预期的{{4, 6}, {6, 2}}结果啦。

内容的提问来源于stack exchange,提问作者Taylor Damron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:46:16