I want to use C++17 parallel capabilities to divide every element of a std::vector by some constant and store the result in another std::vector of same length and (!!) order.
E.g.
{6,9,12} / 3 = {2,3,4}
I have a not compiling example
#include <execution>
#include <algorithm>
template <typename T>
std::vector<T> & divide(std::vector<T> const & in)
{
std::vector<T> out(in.size(), 0);
float const divisor = 3;
std::for_each
( std::execution::par_unseq
, in.begin()
, in.end()
, /* divide each element by divisor and put result in out */ );
return out;
}
How can I get this running, lockless and threadsafe?