我有一个Eigen::VectorX<std::complex<RealType>> x
,根据一些参数,我想返回x.real()
或x.imag()
。我不想返回这个作为Eigen::VectorX<RealType>
,因为该操作将需要堆分配,它将足以返回某种视图,因为x
的存储可以被认为是持久的。
有没有办法在这两种情况下都返回一个轻量级的视图?不幸的是,x.real()
和x.imag()
有不同的返回类型。我目前的解决方案是传递一个Eigen::VectorX<RealType>& x
,这至少可以防止不必要的堆分配,但仍然是不必要的复制操作。
1条答案
按热度按时间bxgwgixi1#
你可以创建一个strided map,第一个元素指向第一个真实的值或第一个虚值(未经测试的代码):
字符串