Maison > développement back-end > C++ > le corps du texte

Comment parcourir des paires d'éléments consécutifs en C sans séparateurs indésirables ?

Barbara Streisand
Libérer: 2024-10-27 04:20:29
original
191 Les gens l'ont consulté

How to Iterate Over Consecutive Element Pairs in C   without Unwanted Separators?

Itérer sur des paires d'éléments consécutifs avec des idiomes C

Une tâche de programmation courante consiste à parcourir une collection et à effectuer une action entre chaque paire consécutive d'éléments éléments. Bien qu'une boucle de base à distance puisse gérer l'itération, elle entraîne souvent un séparateur indésirable à la fin.

Heureusement, il existe plusieurs approches idiomatiques pour résoudre ce problème. Une méthode consiste à utiliser un pointeur supplémentaire pour suivre l'état du séparateur :

<code class="cpp">const auto separator = "WhatYouWantHere";
const auto* sep = "";
for(const auto&amp; item : items) {
    std::cout << sep << item;
    sep = separator;
}
Copier après la connexion

Dans cet exemple, le pointeur sep est initialisé sur une chaîne vide. Au fur et à mesure que la boucle progresse, sep est mis à jour avec la chaîne de séparation chaque fois qu'un élément non final est rencontré. Par défaut, sep sera une chaîne vide avant le premier élément, ce qui n'entraînera aucun séparateur principal.

Alternativement, certaines bibliothèques C fournissent des itérateurs spécialisés qui gèrent la logique du séparateur. Par exemple, la bibliothèque Boost Range inclut la fonction adjacent_filtered, qui peut être utilisée pour appliquer un prédicat à des paires d'éléments successives et filtrer celles qui échouent au prédicat :

<code class="cpp">#include <boost/range/algorithm/adjacent_filtered.hpp>

for(auto& adjacent_pair : boost::adjacent_filtered(items, [](const auto& lhs, const auto& rhs) { return lhs != rhs; })) {
    std::cout << adjacent_pair.first << " separator " << adjacent_pair.second;
}</code>
Copier après la connexion

Cette approche fournit une solution concise et élégante. , mais nécessite l'utilisation d'une bibliothèque externe. En fin de compte, le choix de l'idiome à utiliser dépend des besoins et préférences spécifiques du programmeur.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!