ホームページ >バックエンド開発 >C++ >C で `std::queue` を反復するにはどうすればよいですか?

C で `std::queue` を反復するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-29 02:21:30896ブラウズ

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

std::queue の反復

C では、 std::queue は先入れ先出し (FIFO) コンテナーです。 。デフォルトでは、基礎となるデータ構造として std::deque を使用します。これにより、エンキューおよびデキュー操作が効率的になりますが、キューの内容を反復処理する場合に課題が生じます。

ドキュメントには、「特定のキュー クラスにコンテナ クラスが指定されていない」と記載されています。これは、基礎となる両端キューに直接アクセスして反復処理することができないことを意味します。ただし、この制限を回避する方法がいくつかあります。

範囲ベースの For ループの使用

C 11 がサポートされている場合は、範囲を使用できます。キューの要素を反復するための -based for ループ。このアプローチは、std::queue が要素の走査に使用できるイテレータを提供するという事実を利用します。

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

// Populate the queue...

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

標準イテレータの使用

C 11 はサポートされていませんが、標準のイテレータを使用してキューを反復処理できます。次のコードはこれを示しています。

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

注:

基になる両端キューに直接アクセスすることは可能ですが、未定義のエラーが発生する可能性があるためお勧めできません。動作とデータの破損。代わりに、上記で説明したいずれかの方法を使用して、キューの内容を反復処理します。

以上がC で `std::queue` を反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。