您的位置:首页 > 房产 > 建筑 > c++ 使用queue

c++ 使用queue

2024/12/23 12:12:26 来源:https://blog.csdn.net/HJQD777/article/details/141832598  浏览:    关键词:c++ 使用queue

在 C++ 中,std::queue是一种先进先出(FIFO)的数据结构,属于标准模板库(STL)的一部分。它提供了基本的队列操作,如入队(`push`)、出队(`pop`)和访问队头元素(`front`)等。

### 使用 `std::queue`

以下是使用 `std::queue` 的基本步骤和示例:

1. **包含头文件**:
   使用 `std::queue` 之前,需要包含头文件:
   ```cpp
   #include <queue>
   ```

2. **创建队列**:
   可以创建不同类型的队列:
   ```cpp
   std::queue<int> myQueue; // 创建一个整数队列
   ```

3. **入队操作**:
   使用 `push` 方法向队列添加元素:
   ```cpp
   myQueue.push(1);
   myQueue.push(2);
   myQueue.push(3);
   ```

4. **出队操作**:
   使用 `pop` 方法移除队头元素:
   ```cpp
   myQueue.pop(); // 移除队头元素
   ```

5. **访问队头元素**:
   使用 `front` 方法访问队头元素:
   ```cpp
   int frontElement = myQueue.front(); // 获取队头元素
   ```

6. **检查队列状态**:
   可以使用 `empty` 方法检查队列是否为空,使用 `size` 方法获取元素数量:
   ```cpp
   if (!myQueue.empty()) {
       size_t size = myQueue.size(); // 获取队列大小
   }
   ```

### 示例代码

下面是一个简单的示例,演示了如何使用 `std::queue`:

```cpp
#include <iostream>
#include <queue>

int main() {
    // 创建一个整数队列
    std::queue<int> myQueue;

    // 入队操作
    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);
    
    // 打印队列的大小
    std::cout << "队列大小: " << myQueue.size() << std::endl;

    // 访问队头元素
    std::cout << "队头元素: " << myQueue.front() << std::endl; // 输出 10

    // 出队操作
    myQueue.pop(); // 移除队头元素

    // 打印出队后的状态
    std::cout << "移除队头元素后,新的队头元素: " << myQueue.front() << std::endl; // 输出 20
    std::cout << "新的队列大小: " << myQueue.size() << std::endl;

    // 继续出队
    myQueue.pop(); // 移除 20
    myQueue.pop(); // 移除 30

    // 检查队列是否为空
    if (myQueue.empty()) {
        std::cout << "队列为空" << std::endl;
    } else {
        std::cout << "队列不为空" << std::endl;
    }

    return 0;
}
```

### 输出结果

```
队列大小: 3
队头元素: 10
移除队头元素后,新的队头元素: 20
新的队列大小: 2
队列为空
```

### 总结

`std::queue` 提供了一个简单而有效的方式来管理先进先出的数据结构。它适用于需要按照顺序处理数据的场景,如任务调度、打印任务管理等。`std::queue` 的操作非常直观,适合用来处理一系列顺序的元素。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com