如果我有一个双精度 PMF 的向量,我可以使用transform命令将向量的所有元素除以双计数,如下所示:
transform(PMF.begin(),PMF.end(),PMF.begin(),bind2nd(divides<double>(),count));
然而,现在我有一个unsigned char / double对的向量:
vector<pair<unsigned char, double>> PMF
我希望用值除以 count 来替换double值。我无法使用transform命令或任何其他C ++ 11功能找到一种方法。有没有人知道如何做到这一点?
答案 0 :(得分:3)
您可以使用与此相同的lambda函数:
transform(PMF.begin(),
PMF.end(),
PMF.begin(),
[count](const pair<unsigned char, double> &x)
{
return make_pair(x.first, x.second/count);
});
或
for_each(PMF.begin(),
PMF.end(),
[count](pair<unsigned char, double>& x)
{
x.second /= count;
});
或
for (auto &x : PMF)
x.second /= count;