У меня есть фрагмент кода в main, который точно такой же, как код внутри функции собственного пространства.
введите здесь описание изображения
У меня вопрос: почему работает ли тот же код правильно, если его поместить непосредственно в основную функцию, но выдает ошибку при перемещении в функцию собственного пространства и вызове из основной? В частности, происходит сбой в строке:
введите здесь описание изображения
У меня возникнут проблемы, когда я вызову функцию eigenspace(), как в случае с фото: введите здесь описание изображения
Может ли кто-нибудь помочь мне решить эту проблему? так что я могу упаковать его в функцию и вызвать ее как обычно, спасибо
Мой класс Matrix:
class Matrix{
public:
using Allocator = CustomAllocator;
using Buffer = vector;
Matrix(size_t row , size_t col):m_nrow(row) , m_ncol(col) , m_buffer(row * col){}
void reset_buffer(size_t row , size_t col){
m_nrow = row;
m_ncol = col;
m_buffer = Buffer(col*row);
}
size_t nrow() const {
return m_nrow;
}
size_t ncol() const {
return m_ncol;
}
double operator()(size_t row, size_t col) const
{
return m_buffer[row*m_ncol + col];
}
double &operator()(size_t row , size_t col){
return m_buffer[row*m_ncol + col];
}
bool operator==(const Matrix &B){
if((m_nrow != B.nrow()) || (m_ncol != B.ncol())){
return false;
}else{
for(size_t i = 0 ; i < m_nrow ; ++i){
for(size_t j = 0 ; j < m_ncol ; ++j){
if(m_buffer[i * m_ncol + j] != B.m_buffer[i * m_ncol + j]){
return false;
}
}
}
return true;
}
}
Matrix &operator=(const Matrix &other) {
if (this != &other) {
m_nrow = other.m_nrow;
m_ncol = other.m_ncol;
m_buffer = other.m_buffer;
}
return *this;
}
double* data() { return m_buffer.data(); }
const double* data() const { return m_buffer.data(); }
private:
size_t m_nrow;
size_t m_ncol;
Buffer m_buffer;
std::vector m_data;
};
Matrix multiply_naive(const Matrix &mat1, const Matrix &mat2);
Matrix multiply_tile(const Matrix &mat1, const Matrix &mat2, size_t len_size);
Matrix multiply_mkl(const Matrix &mat1, const Matrix &mat2);
Matrix transpose(const Matrix& A);
Matrix eigenspace( std::vector& A ,const size_t n);
Matrix eigenspace2( std::vector& A_input , const int n , vector& wr , vector& wi , vector& vr);
void print_matrix(const Matrix &mat1);
void eigenDecomposition(Matrix& A, double realEigenvalues[], double imagEigenvalues[], Matrix& rightEigenvectors);
void print_matrix(const Matrix &mat1)
{
for(int i = 0; i < mat1.nrow() ; ++i){
for(int j = 0; j < mat1.ncol() ; ++j){
cout
Подробнее здесь: https://stackoverflow.com/questions/792 ... bad-access
Почему я вызываю функцию mkl EXC_BAD_ACCESS [закрыто] ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Применение @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) к полю не работает
Anonymous » » в форуме JAVA - 0 Ответы
- 110 Просмотры
-
Последнее сообщение Anonymous
-