[英]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或是否应限制使用它的方式。
我相信我有解决方案 ,尽管我可能错了。
由于begin
和end
是非成员重载 ,因此可以使用begin(a)
代替a.begin()
等等。
我使用std::transform
选择是要迭代a
和b
,比较它们,然后将结果存储在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.