在C ++中操纵对向量的一个值

时间:2013-11-25 12:13:13

标签: c++ c++11 vector std-pair

如果我有一个双精度 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功能找到一种方法。有没有人知道如何做到这一点?

1 个答案:

答案 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;