![](/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.