#include <algorithm>
#include <cassert>
#include <iostream>
#include <iterator>
#include <vector>
void multiplyVectors(std::vector<float> &v1, std::vector<float> &v2)
{
assert(v1.size() <= v2.size());
std::transform(v1.begin(), // start of first input range
v1.end(), // end of first input range
v2.begin(), // start of **second input** range
v2.begin(), // start of **output** range
std::multiplies<float>());
}
int main()
{
std::vector<float> v1{1.0, 2.0, 3.0};
std::vector<float> v2{1.0, 2.0, 3.0};
multiplyVectors(v1, v2);
std::copy(std::begin(v2), std::end(v2),
std::ostream_iterator<float>(std::cout, "\n"));
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8dmVjdG9yPgoKdm9pZCBtdWx0aXBseVZlY3RvcnMoc3RkOjp2ZWN0b3I8ZmxvYXQ+ICZ2MSwgc3RkOjp2ZWN0b3I8ZmxvYXQ+ICZ2MikKewogICAgYXNzZXJ0KHYxLnNpemUoKSA8PSB2Mi5zaXplKCkpOwoKICAgIHN0ZDo6dHJhbnNmb3JtKHYxLmJlZ2luKCksIC8vIHN0YXJ0IG9mIGZpcnN0IGlucHV0IHJhbmdlCiAgICAgICAgICAgICAgICAgICB2MS5lbmQoKSwgICAvLyBlbmQgb2YgZmlyc3QgaW5wdXQgcmFuZ2UKICAgICAgICAgICAgICAgICAgIHYyLmJlZ2luKCksIC8vIHN0YXJ0IG9mICoqc2Vjb25kIGlucHV0KiogcmFuZ2UKICAgICAgICAgICAgICAgICAgIHYyLmJlZ2luKCksIC8vIHN0YXJ0IG9mICoqb3V0cHV0KiogcmFuZ2UKICAgICAgICAgICAgICAgICAgIHN0ZDo6bXVsdGlwbGllczxmbG9hdD4oKSk7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHYxezEuMCwgMi4wLCAzLjB9OwogICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHYyezEuMCwgMi4wLCAzLjB9OwoKICAgIG11bHRpcGx5VmVjdG9ycyh2MSwgdjIpOwogICAgc3RkOjpjb3B5KHN0ZDo6YmVnaW4odjIpLCBzdGQ6OmVuZCh2MiksCiAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPGZsb2F0PihzdGQ6OmNvdXQsICJcbiIpKTsKfQ==