C 11 propose diverses méthodes d'itération des conteneurs, notamment des boucles basées sur des plages et std::for_each. Cependant, quelle approche est la plus efficace lors d'une itération sur plusieurs conteneurs de taille équivalente, tels que :
for(unsigned i = 0; i < containerA.size(); ++i) { containerA[i] = containerB[i]; }
L'approche recommandée consiste à itérer sur les indices en utilisant une boucle for basée sur une plage :
for(unsigned i : indices(containerA)) { containerA[i] = containerB[i]; }
Où indices est une simple fonction wrapper qui génère une plage paresseuse pour les indices. Cette méthode correspond à l'efficacité du manuel for loop.
Pour les occurrences fréquentes de ce modèle, envisagez d'utiliser la fonction zip pour créer une gamme de tuples combinant des éléments appariés. :
for (auto& [a, b] : zip(containerA, containerB)) { a = b; }
Cette approche simplifie le code et améliore la lisibilité.
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!