std::complex の std::vector が与えられた場合、複素数の実部のみを含むベクトルに変換し、一定の係数で除算したいと思います。今、私はそれをします:
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 を使用して同じことを行う方法を探しています。私は試した:
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>&)’|
「未解決のオーバーロードされた関数型」がある理由がわかりません。
誰かが私に何が悪いのか説明してもらえますか?