Maison > Article > développement back-end > Comment puis-je créer un pipeline de plage qui applique une fonction aux éléments et aplatit les résultats à l'aide de conteneurs temporaires dans Range-V3 ?
Création de pipelines de plage avec des conteneurs temporaires dans Range-V3
Lorsque vous traitez avec une fonction tierce qui opère sur des éléments d'une plage et renvoie un vecteur, une question naturelle se pose : comment créer un pipeline de plage qui applique la fonction à chaque élément et produit une plage unique et aplatie contenant tous les éléments renvoyés ?
Dans les versions précédentes de Range-V3, les tentatives créer de tels pipelines à l'aide de view::transform et view::join échouerait en raison de l'impossibilité de créer des vues de conteneurs temporaires.
Cependant, un commit récent a résolu ce problème en introduisant l'opérateur view::cache1 , qui permet de stocker les résultats intermédiaires dans des conteneurs temporaires. Cela permet la création de pipelines de gamme qui utilisent des conteneurs temporaires tout en conservant leur robustesse.
Pour illustrer cette fonctionnalité, considérons l'exemple fourni :
<code class="cpp">auto rng = src | view::transform(f) | view::cache1 | view::join;</code>
Dans ce pipeline, view::transform applique la fonction f à chaque élément de src, produisant des vecteurs temporaires. view::cache1 met en cache ces vecteurs temporaires, permettant aux opérations ultérieures telles que view::join de consommer les éléments aplatis.
Le pipeline mis à jour garantit que la plage aplatie rng a les propriétés suivantes :
Cette solution démontre la polyvalence de range-v3 et sa capacité à gérer des manipulations de plage complexes impliquant des conteneurs temporaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!