Error: no match for ‘operator*’ (operand types are ‘std::vector<std::complex<double> >’ and ‘std::complex<double>’)
Error: no match for ‘operator*’ (operand types are ‘std::vector<std::complex<double> >’ and ‘std::complex<double>’)
我将向量 class 与复数一起使用,我必须将一个复数向量与一个复数相乘,如下所示:
vector< complex<double> > vec;
complex<double> z;
// some initialization of vec and z ...
vector< complex<double> > res;
res = vec*z; // here is the error
error: no match for ‘operator*’ (operand types are ‘std::vector<std::complex<double> >’ and ‘std::complex<double>’)
是否可以使用这些参数重载 operator*?
是的,这是可能的。以下是如何为 complex<T>
:
实现自己的运算符 *
template <typename T>
vector<complex<T>> operator *(const vector<complex<T>>& v, const complex<T> z) {
vector<complex<T>> res;
transform(v.begin(), v.end(), back_inserter(res),
[&](complex<T> x) -> complex<T> {
return x * z;
});
return res;
}
我将向量 class 与复数一起使用,我必须将一个复数向量与一个复数相乘,如下所示:
vector< complex<double> > vec;
complex<double> z;
// some initialization of vec and z ...
vector< complex<double> > res;
res = vec*z; // here is the error
error: no match for ‘operator*’ (operand types are ‘std::vector<std::complex<double> >’ and ‘std::complex<double>’)
是否可以使用这些参数重载 operator*?
是的,这是可能的。以下是如何为 complex<T>
:
*
template <typename T>
vector<complex<T>> operator *(const vector<complex<T>>& v, const complex<T> z) {
vector<complex<T>> res;
transform(v.begin(), v.end(), back_inserter(res),
[&](complex<T> x) -> complex<T> {
return x * z;
});
return res;
}