首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用复杂数据类型填充xtensor数组

如何用复杂数据类型填充xtensor数组
EN

Stack Overflow用户
提问于 2019-01-14 07:44:24
回答 1查看 115关注 0票数 1

在这里转述,但这就是问题所在

代码语言:javascript
复制
xt::pyarray< std::complex<double> > output;
output = 0; // fails to compile
output = double(0); // also fails to compile
output = complex<double>(0); // succeeds

然而这是很好的

代码语言:javascript
复制
std::complex<double> foo;
foo = double(0);

问题是我正在写一个接受任意xtensor数组的函数,例如。

代码语言:javascript
复制
template<typename xtarray_t>
void my_function(xtarray_t &output, const xtarray_t &input) {
    output = 0;
}

所以一般来说,这是

代码语言:javascript
复制
output = complex<double>(0);

都会失败。我见过this,但不确定是否实现了它,也不确定如何使用它,找不到文档。不过总的来说,我认为它应该仍然可以与std::complex一起工作。

谢谢你的帮助!

编译器输出:

代码语言:javascript
复制
xtensor-python/include/xtensor-python/pyarray.hpp:360:20: note: candidate function not viable: no known conversion from 'double' to 'const xt::pyarray<std::__1::complex<double>, xt::layout_type::dynamic>::self_type' (aka 'const pyarray<std::__1::complex<double>, (xt::layout_type)0>') for 1st argument 
    self_type& operator=(const self_type& rhs);

xtensor-python/include/xtensor-python/pyarray.hpp:363:20: note: candidate function not viable: no known conversion from 'double' to 'xt::pyarray<std::__1::complex<double>, xt::layout_type::dynamic>::self_type' (aka 'pyarray<std::__1::complex<double>, (xt::layout_type)0>') for 1st argument
    self_type& operator=(self_type&& e) = default;

xtensor-python/include/xtensor-python/pyarray.hpp:369:20: note: candidate template ignored: could not match 'xexpression<type-parameter-0-0>' against 'double'
    self_type& operator=(const xexpression<E>& e);
EN

回答 1

Stack Overflow用户

发布于 2019-01-17 12:22:47

答案是这样做

代码语言:javascript
复制
using value_t = typename xtarray_t::value_type;
output = value_t(0);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54174261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档