在外部阵列中保存垫子时可能存在犰狳垫错误?

时间:2017-01-15 22:15:17

标签: c++ arrays matrix mat armadillo

我有一个像这样的问题。我想创建一个由数组支持的犰狳矩阵,这很好,很容易做到。然而,当我试图将所得到的垫子保存在犰狳垫阵列中时。对底层c数组的更改不再更改mat。示例代码:

#include<iostream>
#include<armadillo>

using namespace std;
using namespace arma;

int main() {
    Mat<float>* test = (Mat<float>*)malloc(sizeof(Mat<float>));
    float *Amem = (float*) malloc(4*sizeof(float));
    Amem[0] = 0; Amem[1] = 1; Amem[2] = 2; Amem[3] = 3;
    Mat<float> A = Mat<float>(Amem, 2, 2, false, false);
    test[0] = A;

    test[0].print();
    Amem[1] = 100;
    test[0].print();
    A.print();
    free(test);
    free(Amem);
    return 0;
}

运行以下代码时,会产生:

test[0] = 0  2
          1  3

test[0] = 0  2
          1  3

A = 0  2
    100 3

为什么不是A并且测试[0]相同?反正有没有让他们一样吗?

0 个答案:

没有答案