Maison >développement back-end >C++ >Comment puis-je parcourir une `std::queue` en C ?

Comment puis-je parcourir une `std::queue` en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 02:21:30895parcourir

How Can I Iterate Over a `std::queue` in C  ?

Itération sur std::queue

En C, std::queue est un conteneur premier entré, premier sorti (FIFO) . Par défaut, il utilise std::deque comme structure de données sous-jacente. Bien que cela le rende efficace pour les opérations de mise en file d'attente et de retrait de la file d'attente, cela présente un défi lorsqu'il s'agit d'itérer sur le contenu de la file d'attente.

La documentation indique qu '"aucune classe de conteneur n'est spécifiée pour une classe de file d'attente particulière". Cela signifie que nous ne pouvons pas accéder directement au deque sous-jacent et le parcourir. Cependant, il existe plusieurs façons de contourner cette limitation.

Utilisation d'une boucle For basée sur une plage

Si vous disposez du support C 11, vous pouvez utiliser une plage -boucle for basée sur pour parcourir les éléments de la file d'attente. Cette approche profite du fait que std::queue fournit des itérateurs qui peuvent être utilisés pour parcourir les éléments.

<code class="cpp">std::queue<int> queue;

// Populate the queue...

for (const int& element : queue) {
  std::cout << element << " ";
}</code>

Utilisation d'un itérateur standard

Si vous Si vous n'avez pas de support C 11, vous pouvez toujours utiliser un itérateur standard pour parcourir la file d'attente. Le code suivant le démontre :

<code class="cpp">std::queue<int> queue;

// Populate the queue...

std::queue<int>::iterator it;
for (it = queue.begin(); it != queue.end(); ++it) {
  std::cout << *it << " ";
}</code>

Remarque :

Bien qu'il soit possible d'accéder directement au deque sous-jacent, cela n'est pas recommandé car cela peut conduire à un résultat indéfini. comportement et corruption des données. Utilisez plutôt l'une des méthodes décrites ci-dessus pour parcourir le contenu de la file d'attente.

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