![](/img/trans.png)
[英]Segmentation fault (core dumped) on Ubuntu with matrix functions on C++
[英]Segmentation fault (core dumped) when initializing a matrix in c++
执行实例化类Matrice
的程序并在其构造函数中创建该程序时,出现Segmentation fault (core dumped)
错误。
这是我的简单代码:
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
class Matrice{
public:
std::vector<std::vector<int> > mat;
Matrice(){
for(int i=0; i < 3; ++i) {
for(int j=0; j < 2; ++j) {
mat[i][j] = rand()%(10-0)+0;
}
}
}
};
int main(){
Matrice mat1;
return 0;
}
有人可以启发我。
您需要在访问元素之前调整矩阵大小:
mat.resize(3);
for( int i=0; i < 3; ++i)
{
mat[i].resize(2);
}
Matrice(){
for(int i=0; i < 3; ++i) {
mat.push_back(std::vector<int>());
for(int j=0; j < 2; ++j) {
mat[i].push_back(rand()%(10-0)+0);
}
}
}
编辑:
说明:向量需要push_back
函数调用才能在向量的末尾添加一个元素,并且如果向量超过了最初为向量分配的大小,则会自动为向量重新分配空间。 由于它是向量的向量,因此您首先需要推回任意向量,然后在存储在mat [i]中的每个任意向量上,我们push_back
所需的随机整数值。
您使用的std::vector
错误。 请参阅https://en.cppreference.com/w/cpp/container/vector/operator_at
[]
运算符返回对现有值的引用。 与std::map
不同,它不会插入新值。 使用std::vector::push_back()
将元素添加到向量中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.