以下代码无法编译:
#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 或对其使用方式有限制。
最佳答案
我相信我有 solution ,虽然我可能是错的。
因为 begin
和 end
是non-member overloads , 你使用 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);
});
关于c++ - 多维 std::valarray 和不等式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20278483/