給定一個std :: complex的std :: vector,我想將它轉換爲一個只包含實部的複數,除以一些常數係數。 現在,我做到這一點:使用std :: transform和tr1 :: bind來轉換一個std :: complex的向量
std::vector<std::complex<double> > vec;
std::vector<double> realVec;
double norm = 2.0;
...
for (std::vector<std::complex<double> >::iterator it = vec.begin(), itEnd = vec.end(); it != itEnd; ++it)
realVec.push_back((*it).real()/norm);
這工作得很好,當然,但我正在尋找一種方式來使用std ::變換做同樣的事情。我試過了:
transform(vec.begin(), vec.end(), back_inserter(realVec), tr1::bind(divides<double>(), tr1::bind(&complex<double>::real, tr1::placeholders::_1), norm));
但是它不起作用。我有這個錯誤:
erreur: no matching function for call to ‘bind(<unresolved overloaded function type>, std::tr1::_Placeholder<1>&)’|
我不明白爲什麼有一個「無法解析的重載函數類型」。
有人可以向我解釋什麼是錯的?
我知道這可能是異端,但IMO使用版本的for循環是多少清晰。 – 2011-04-19 15:40:40