我是 API 主题的新手。 你能告诉我程序崩溃的原因吗?我究竟做错了什么?我在 Ubuntu 中工作。八度 6.4.0
#include <iostream>
#include <octave/oct.h>
#include <octave/octave.h>
#include <parse.h>
#include <interpreter.h>
using namespace std;
int main() {
// Создание матрицы
Matrix mat(2, 3);
mat(0, 0) = 1;
mat(0, 1) = 2;
mat(0, 2) = 3;
mat(1, 0) = 4;
mat(1, 1) = 5;
mat(1, 2) = 6;
// Вывод исходной матрицы
cout << "Исходная матрица:" << endl << mat << endl;
// Транспонирование матрицы
octave_value_list in, out;
in(0) = mat;
out = octave::feval("transpose", in, 1);
// Получение транспонированной матрицы из выходного списка значений
Matrix transposed_mat = out(0).matrix_value();
// Вывод транспонированной матрицы
cout << "Транспонированная матрица:" << endl << transposed_mat << endl;
return 0;
}
这是我的汇编:
g++ -o 2 2.cpp -I/usr/include/octave-6.4.0 -I/usr/include/octave-6.4.0/octave -I/usr/include/octave-6.4.0/octave/interpreter -I/usr/include -I/usr/include/octave-6.4.0/octave -loctave -loctinterp -Wl,-rpath,/usr/lib/x86_64-linux-gnu/octave/6.4.0 -L/usr/lib/x86_64-linux-gnu/octave/6.4.0 -Wl,--no-as-needed -loctave -loctinterp
在没有手册的情况下很难理解 API 的主题(没有找到它们),但到目前为止我只是尝试编写线性方程组的解决方案(得到它并且它有效)。 如果编译有问题请指教。
我的猜测是异常发生在这一行:
octave_value_list in;
in(0) = mat;
octave_value_list
非常类似于 std::vector<>
。在这里,您声明一个空列表,然后尝试将某些内容分配给第一个元素,但该元素不存在。
您可以通过以下三种方式之一修复此代码:
octave_value_list in(1); // declare it with the right size
in(0) = mat;
或
octave_value_list in;
in.append(mat); // append to the list
或
octave_value_list in(mat); // put the array in the list upon creation