使用std :: transform取代矢量

时间:2016-11-16 20:52:17

标签: c++ vector stl

如何使用std::transformstd::foreach实现此目的? (没有C ++ 11)

std::vector<double> exp_c(const std::vector<double>& x) {
  const int n = x.size();
  std::vector<double> y(n);
  for (int i = 0; i < n; i++) {
    y[i] = std::exp(x[i]);
  }
  return y;
}

感谢。

2 个答案:

答案 0 :(得分:3)

使用android:background="@drawable/mydrawable",如下所示:

std::transform

实际上,当你使用lambda时,这几乎就是c ++ 11编译器所能创建的。

答案 1 :(得分:1)

有点丑陋的解决方案:

std::vector<double> exp_c(const std::vector<double>& x)
{
    std::vector<double> y;
    y.reserve(x.size());
    std::transform(x.begin(), x.end(), std::back_inserter(y),
                   static_cast<double(*)(double)>(std::exp));
    return y;
}

static_cast必须告诉编译器将std::exp的哪个重载传递给std::transform