Maison  >  Article  >  développement back-end  >  Comment parcourir des paires d'éléments consécutifs en C sans séparateurs indésirables ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 04:20:29192parcourir

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;
}

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>

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!

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