错误:为“ delete”(预期指针)输入了“ class Eigen :: Tensor <double,3 =“”>”参数

时间:2019-02-04 12:57:53

标签: c++ eigen tensor

我正在尝试删除使用Eigen :: Tensor创建的张量

N1,N2和N3是int的向量

N1 << 1,2,3
N2 << 4,3,5
N3 << 9,7,8


 for(int i = 0; i < 3; i++ )
{
 Eigen::Tensor<double, 3> Hs(N1(i),N2(i),N3(i));

 Hs.setZero();

 delete Hs;
  }

如何删除张量?我必须清除它并更改其大小

提前谢谢

1 个答案:

答案 0 :(得分:2)

您的编译器正在告诉您什么地方不对。 H不是指针,也没有在堆上分配。只需删除delete H,就可以了,因为它超出范围时会被破坏。

这就是创建3x3矩阵的方法:

#include <Eigen/Sparse>


int main(void)
{
    Eigen::Matrix<double, 3, 3> H;
    H.setZero();
}

仅出于完整性考虑(如果不需要,请不要这样做):

Eigen::Tensor<double, 3> H* = new Eigen::Tensor<double, 3>(N1,N2,N3);

然后删除将是适当的。