多维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,或者对其使用方式是否有限制。
我相信我有解决方案,尽管我可能错了。
因为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);
});
相关文章:
- 为什么std::valarray不是算术的
- 为什么std::vector和std::valarray初始化构造函数不同
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 查找不等式为真的次数时出现问题
- C++中 c_str() 和字符* 的不等式
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- 运算符 += 应用于 std::valarray<int*>
- Valarray 切片数组与 'operator*' 不匹配
- 查找满足浮点不等式方程的最小整数
- 为什么以下不等式在C++计算为真?
- C++ std::valarray 成员变量意外更改
- 它是 gcc 中 std::valarray 实现的错误吗?
- 如何将 std::valarray<double> 与 gsl 集成?
- 避免在 c++ 向量或 valarray 中进行初始化
- 为什么Valarray在Visual Studio 2015上如此慢
- Valarray 就地操作作为临时分配给出不同的结果
- 将valarray转换为基本阵列
- 如何访问C数组中包含的valarray中的元素
- 在哪里使用"std::valarray"是个好主意?
- 多维std::valarray和不等式