Maison  >  Article  >  développement back-end  >  Comment éviter les séparateurs superflus dans les boucles d'itération : une solution C 11 ?

Comment éviter les séparateurs superflus dans les boucles d'itération : une solution C 11 ?

DDD
DDDoriginal
2024-10-30 21:13:02527parcourir

How to Avoid Extraneous Separators in Iteration Loops: A C  11 Solution?

Éviter les séparateurs superflus dans les boucles d'itération

Itérer sur une séquence d'éléments implique souvent d'imprimer ou d'effectuer une action nécessitant un séparateur entre des éléments consécutifs. Cependant, l'ajout d'un séparateur après le dernier élément peut être indésirable.

Approches traditionnelles pour les itérateurs non destructifs

Lors d'une itération sur des tableaux avec une boucle for de style C ou de l'utilisation d'itérateurs non destructifs pour les séquences de taille inconnue, une casse spéciale du dernier élément peut empêcher le séparateur supplémentaire :

<code class="cpp">for (const auto& item : items) {
    cout << item;
    if (std::next(it) != items.cend()) {  // Not the last element
        cout << separator;
    }
}</code>

Une solution plus élégante utilisant les constructions C 11

Au lieu d'une casse spéciale explicite, C 11 introduit une une manière plus propre d'y parvenir :

<code class="cpp">const auto separator = "WhatYouWantHere";
const auto* sep = "";
for (const auto& item : items) {
    std::cout << sep << item;
    sep = separator;  // Only assign when not on the last element
}</code>

Dans cette approche, une variable de pointeur sep permet de savoir si un séparateur a déjà été imprimé. Lorsque vous rencontrez le premier élément, sep est vide, donc rien n'est imprimé. Au fur et à mesure que la boucle avance, sep se voit attribuer la valeur du séparateur. Pour tous les éléments suivants, le séparateur est imprimé avant l'élément.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn