STL向量和转换c ++

时间:2015-08-04 16:30:26

标签: c++ vector stl

我有一些声明

vector<double> ved1(10), ved2(10), ved3(10);
array<double, 10> vod1, vod2, vod3;
valarray<double> vad1(10), vad2(10), vad3(10);

如何从此版本转换代码

vad3 = 10.0* ((vad1 + vad2) / 2.0 + vad1 * cos(vad2));

到这个

transform(ved1.begin(), ved1.end(), ved2.begin(), ved3.begin(), plus<double>());

仅使用vector-STL版本。

1 个答案:

答案 0 :(得分:7)

你可以做同样的事情,但是使用lambda函数作为最后一个参数

transform(begin(ved1),
          end(ved1),
          begin(ved2),
          begin(ved3),
          [](double a, double b){ return 10.0 * ((a + b) / 2.0 + a * cos(b)); });