linux-BR.org

Notícias de software livre e tecnologias

Por exemplo, dado o std :: Array arr = {1,2,3}, std :: accumulate (begin (arr), end (arr), 0, std :: plus ()) será executado (((0 + 1) + 2) + 3).Não seria tão diferente de STD :: Ranges :: Fold_*, mas há alguns pontos de design sutis, como diferentes restrições no operador binário para permitir op (*it, acc), op (acc,*it) eop ( *it, *it).Ou std :: acumular (Begin (arr), end (arr), 0, f) será executado f (f (f (0, 1), 2), 3).Para o último exemplo, uma dobra direita se pareceria f (1, f (2, f (3, 0))).Para algumas operações, como +, elas dariam o mesmo resultado, mas para operações que não são associativas (como -), isso poderia fazer a diferença.

Fonte: https://devblogs.microsoft.com/cppblog/cpp23s-new-fold-algorithms/