簡體   English   中英

錯誤:&#39;operator *&#39;不匹配(操作數類型是&#39;std :: vector <std::complex<double> &gt;&#39;和&#39;std :: complex <double> “)

[英]Error: no match for ‘operator*’ (operand types are ‘std::vector<std::complex<double> >’ and ‘std::complex<double>’)

我使用帶有復數的向量類,我必須將復數向量與復數相乘,如下所示:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM