繁体   English   中英

多维std :: valarray和不等式

[英]Multidimensional std::valarray and inequalities

以下代码无法编译:

#include <valarray>

int main()
{
   std::valarray<std::valarray<int>> a;
   std::valarray<std::valarray<int>> b;
   //std::valarray<std::valarray<bool>> c;
   std::valarray<bool> c;
   c = (a == b);
   return 0;
}

c的两个声明都不能编译。 是否允许以上面演示的方式使用valarray或是否应限制使用它的方式。

我相信我有解决方案 ,尽管我可能错了。

由于beginend 是非成员重载 ,因此可以使用begin(a)代替a.begin()等等。

我使用std::transform选择是要迭代ab ,比较它们,然后将结果存储在c ,这就是为什么lambda返回std::valarray<bool> (而不是bool )的原因。

   std::valarray<std::valarray<int>> a;
   std::valarray<std::valarray<int>> b;
   std::valarray<std::valarray<bool>> c;

   std::transform(begin(a), end(a), begin(b), begin(c),
   [&] (std::valarray<int> a_val, std::valarray<int> b_val) 
       -> std::valarray<bool> {
       return std::valarray<bool>(a_val == b_val);
   });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM