[英]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.