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.
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>
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!