繁体   English   中英

通过推回 2D 向量导致的分段错误

[英]Segmentation fault by pushing back 2D vector

我有一个 function 接受一个数字字符串并将每个元素分配给一个单维向量:

void insert(vector<int> &matrix, string s)
{
for (int i=0; i<s.length(); i++)
matrix.push_back(s[i]-'0');
}

然后,在我的主要function 我声明一个二维向量:

vector<vector<int>> matrix;

现在例如我尝试执行 function:

insert(matrix[0],"12345");

它只会给我错误Segmentation fault ,我不知道为什么。

我该如何解决这个问题?

我想是因为你声明你的 2Dvector 像

向量<向量> 矩阵;

所以通过这样声明你的矩阵大小为0。

由于您的矩阵是空的,因此您无法从中访问元素。 而是使用一些默认值(如 0)初始化您的 2d 向量并尝试一下。

#include <vector>
#include <iostream>

using namespace std;
void insert(vector<int> &matrix, string s)
{
    for (int i=0; i<s.length(); i++)
        matrix.push_back(s[i]-'0');
}

int main()
{
    int n=2,m=2;
    vector<vector<int> > matrix(n, vector<int>(m));
    
    insert(matrix[0],"12345");
    for (auto i:matrix)
    {
        for (auto j:i)
        {
            
            cout << j;
        }
    }

}

我不确定这是否是您对插入函数的期望

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM