多维std :: valarray和不等式

时间:2013-11-29 04:41:06

标签: c++ multidimensional-array compiler-errors valarray

以下代码无法编译:

#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,或者是否应该如何使用valarray。

1 个答案:

答案 0 :(得分:1)

我相信我有solution,但我可能错了。

由于beginendnon-member overloads,因此您使用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);
   });