c++ - 错误:输入'class Eigen::Tensor' 给 'delete' 的参数,预期的指针
问题描述
我正在尝试删除使用 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;
}
如何删除我的张量?我必须清除它并改变它的大小
先感谢您
解决方案
你的编译器告诉你什么是错的。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);
那么删除将是合适的。
推荐阅读
- random - 单独使用 PRNG 生成数字的每个字节是否可以接受?
- selenium-webdriver - 有没有办法检查量角器中的东西是否已成功导出
- javascript - 为跨度调用 getBoundingClientRect 在 Chromium 上返回错误的位置,但在 Firefox 上有效
- java - JFrame 无法正确打印
- python - 如何将数据从存储桶逐行流式传输到python脚本
- python-3.x - 在python3中设置精度
- python - 如何在 Python 中实现非 root 和非子进程 ping?
- javascript - HackerRank 问题 PlusMinus 使用 for-loop
- c# - 从相同类型获取对象的构造函数
- apache - 如何将 .htaccess 更新为有条件的 gzip on-the-fly