Я заметил, что большинство (если не все) функций в <algorithm>
получают одну или несколько дополнительных перегрузок. Все эти дополнительные перегрузки добавляют определенный новый параметр, например, std::for_each
идет от:
template< class InputIt, class UnaryFunction >
UnaryFunction for_each( InputIt first, InputIt last, UnaryFunction f );
в
template< class ExecutionPolicy, class InputIt, class UnaryFunction2 >
void for_each( ExecutionPolicy&& policy, InputIt first, InputIt last, UnaryFunction2 f );
Какое влияние оказывает этот дополнительный ExecutionPolicy
на эти функции?
В чем разница между:
-
std::execution::seq
-
std::execution::par
-
std::execution::par_unseq
А когда использовать тот или иной?