Я заметил, что большинство (если не все) функций в <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
А когда использовать тот или иной?