The following code example is taken from the book
C++20 - The Complete Guide
by Nicolai M. Josuttis,
Leanpub, 2021
The code is licensed under a
Creative Commons Attribution 4.0 International License.
// raw code
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <execution>
int main (int argc, char** argv)
{
// init number of argument from command line (default: 1000):
int numElems = 1000;
if (argc > 1) {
numElems = std::atoi(argv[1]);
}
// init vector of different double values:
std::vector<double> coll;
coll.reserve(numElems);
for (int i=0; i<numElems; ++i) {
coll.push_back(i * 4.37);
}
// process square roots:
// - allow SIMD processing but only one thread
std::for_each(std::execution::unseq, // since C++20
coll.begin(), coll.end(),
[](auto& val) {
val = std::sqrt(val);
});
for (double value : coll) {
std::cout << value << '\n';
}
}