c++ - 通过推回 2D 向量导致的分段错误
问题描述
我有一个函数,它接受一个数字字符串并将每个元素分配给一个单维向量:
void insert(vector<int> &matrix, string s)
{
for (int i=0; i<s.length(); i++)
matrix.push_back(s[i]-'0');
}
然后,在我的main函数中,我声明了一个 2D 向量:
vector<vector<int>> matrix;
现在例如我尝试执行该功能:
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;
}
}
}
我不确定这是否是您对插入函数的期望
推荐阅读
- css - 我们如何“内联精灵图像”?
- angular - angular 5 验证和处理中的部分形式
- sql - SQL Server存储过程将所有值加倍
- c++ - Gtk - 如何设置盒子大小?
- grails - Grails 在同一个 gsp 中使用 Command Object 和 object
- java - 如何将我的 java 变量设置为具有 xsi:type
- php - MySQL中的查询加速
- php - 在 laravel 5.6 中找不到驱动程序,我使用 pgsql (pgadmin4) 作为数据库
- c# - 使用udp将数据发送到多个客户端c#
- spring - Spring框架错误:NonUniqueResultException:结果返回多个元素