给定一个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