Valarray 切片数组与 'operator*' 不匹配
Valarray slice array no match for 'operator*'
我正在尝试使用两个 valarray 做多维点积,即返回一个 valarray,使得每个元素都是输入 valarray 两行上的点积。
我使用切片按数组划分为行。检查文档,它指出 * 是 slice_array 的运算符,我相信我的工作方式类似于 * 的 valarrays。它在两个数组之间执行元素乘法。
valarray<float> mult(valarray<float> arr1, valarray<float> arr2, int row1, int mid, int col2)
{
valarray<float> new_arr;
new_arr.resize(row1*col2);
for (int i = 0; i < row1*col2; ++i)
{
slice s (i*mid,mid,1);
new_arr[i] = (arr1[s] * arr2[s]).sum();
}
return new_arr;
}
我不断得到的错误是:|12|error: no match for 'operator*' (operand types are 'std::slice_array<float>' and 'std::slice_array<float>')|
我不确定我做错了什么。在我制作自己的元素乘法函数之前,代码或slice_array的使用是否有任何错误?
slice_array
的文档说接口是
template <class T> class slice_array {
public:
/* Skipped for brevity */
void operator*= (const valarray<T>&) const;
};
换句话说,您可以将切片乘以valaray
,但它没有说明将两个切片相乘。
相关文章:
- 与'operator='不匹配(操作数类型'String'且"void")
- Valarray 切片数组与 'operator*' 不匹配
- 错误:'operator>'不匹配(操作数类型为 'Student' 和 'Student'
- 与'operator<<'不匹配(操作数类型'std::ostream {aka std::basic_ostream<char>}'
- 与"operator<<"不匹配(操作数类型'std::ostream'
- C++ 重载:[错误] 与'operator='不匹配(操作数类型为 'String' 和"字符串")
- 使用标准::时间::high_resolution_clock时"operator ="不匹配
- 错误:与'operator='不匹配(操作数类型为 'PlDrustvo' 和"PlDrustvo")|
- 错误:与'operator='不匹配(操作数类型为"std::map<int、double>::iterator
- 错误:尝试减去字符串时'operator-'不匹配
- 调用模板方法会导致'operator<'不匹配
- \main.cpp|103|error: 与"operator<<"不匹配(操作数类型为"std::ostream {aka std::basic_ostream<char&g
- 使用 #omp 时'operator -'不匹配
- 尝试使用 fstream 将字符写入文件:'operator<<'不匹配
- C++ 将文件读取到数组错误:'operator>>'不匹配
- 有没有办法修复此错误:与'operator[]'不匹配(操作数类型为 'empl' 和"int")
- 错误与'operator='不匹配(操作数类型为 'Person' 和"Person*")
- 我得到"将值分配给结构数组 iin 时与'operator='不匹配C++
- 在地图中搜索值时'operator='不匹配
- 错误:'operator<<'和"运算符>>"不匹配。请帮忙?