La conception ingénieuse et les lacunes de std::adjacent_difference en C++
Cet article explore la philosophie de conception de l'algorithme `std::adjacent_difference` dans la bibliothèque standard C++. Cet algorithme calcule les différences entre les éléments adjacents d'une séquence d'entrée, en copiant le premier élément vers la sortie. Bien que cette conception garantisse la symétrie avec `std::partial_sum`, reflétant la différenciation et l'intégration en calcul, elle limite également sa généricité, car la différence entre des éléments d'un type arbitraire peut avoir un type différent. L'article établit des parallèles avec les dérivées et les intégrales en calcul, expliquant la raison d'être de l'algorithme et le comparant à la fonction `deltas` plus flexible de Q. La conclusion est que, bien que l'intention initiale de Stepanov était solide, l'algorithme manque de généricité ; `pairwise_transform` de C++23 offre une alternative plus flexible.
Lire plus