Strategies are data types that specify how work is distributed over the threads participating in a data parallel algorithm. As algorithms typically operate over iterators, strategy classes convert sequential iterators to per-thread parallel iterators. Conceptually, strategies define iterator adaptors. A strategy class is templatized on iterator types, value types, reference types, and distance types. It supports operators that, given sequential iterators, return per-thread parallel iterators. Strategies may be static or dynamic.