Maison >développement back-end >C++ >Comment puis-je parcourir une `std::queue` en 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!