queue队列、deque双端队列和priority_queue优先队列
发布日期:2025-05-05 13:10:19 浏览次数:3 分类:精选文章

本文共 1823 字,大约阅读时间需要 6 分钟。

C++ 数据结构指南:队列、双端队列和优先队列

1. 队列(Queue)

队列是一种先进先出的数据结构(FIFO),常用于处理实时任务或批量处理。以下是队列的主要操作方法:

1.1 size()

  • 功能:返回队列中元素的数量。
  • 示例int size = q.size();

1.2 front()

  • 功能:返回队列中第一个元素。
  • 示例string front = q.front();

1.3 pop()

  • 功能:从队列中取出并删除第一个元素。
  • 示例q.pop();

1.4 push()

  • 功能:将一个元素添加到队列的末尾。
  • 示例q.push("元素");

1.5 empty()

  • 功能:判断队列是否为空,返回truefalse
  • 示例bool empty = q.empty();

2. 双端队列(Deque)

双端队列(Deque)是一种既可以从前面(front)也可以从后面(back)添加和删除元素的队列。它比普通队列更灵活,适合多个操作场景。

2.1 push_back()

  • 功能:从队列的末尾添加一个元素。
  • 示例q.push_back("元素");

2.2 push_front()

  • 功能:从队列的开头添加一个元素。
  • 示例q.push_front("元素");

2.3 pop_back()

  • 功能:从队列的末尾删除一个元素。
  • 示例q.pop_back();

2.4 pop_front()

  • 功能:从队列的开头删除一个元素。
  • 示例q.pop_front();

2.5 size()

  • 功能:返回队列中元素的数量。
  • 示例int size = q.size();

2.6 at(idx)

  • 功能:返回队列中指定索引位置的元素。
  • 示例string element = q.at(2);

2.7 insert(pos, elem)

  • 功能:在指定位置插入一个元素的拷贝。
  • 示例int pos = q.insert(q.end(), "元素");

2.8 erase(pos)

  • 功能:删除指定位置的元素,并返回下一个元素的位置。
  • 示例int new_pos = q.erase(q.begin() + 2);

2.9 erase(begin, end)

  • 功能:删除指定区间内的元素。
  • 示例q.erase(q.begin(), q.begin() + 3);

2.10 clear()

  • 功能:删除队列中所有元素。
  • 示例q.clear();

3. 优先队列(Priority Queue)

优先队列是一种基于堆的数据结构,能够快速获取最大的元素(大顶堆,默认定义)或最小的元素(小顶堆,需要指定比较器)。

3.1 队列定义

  • 小顶堆
    priority_queue
, greater
> p;
  • 大顶堆(默认定义)
    priority_queue
    q;
  • 3.2 常用操作

    • size():返回队列中元素的数量。
    • front():返回队列中第一个(最大)元素。
    • pop():从队列中取出并删除最大的元素。
    • push():将一个元素添加到队列中。

    4. 简单实例

    #include 
    #include
    #include
    using namespace std;
    int main() {
    queue
    Q;
    Q.push("红");
    Q.push("黄");
    Q.push("黄");
    Q.push("蓝");
    cout << Q.front() << " "; // 输出队列头元素:红
    Q.pop();
    Q.pop();
    cout << Q.size() << " "; // 输出队列中的元素数:2
    Q.push("绿");
    // 如果是栈,输出将是黄,但队列是FIFO
    cout << Q.front() << " "; // 输出队列头元素:黄
    return 0;
    }

    运行结果:

    红 黄
    2

    以上内容完整涵盖了队列、双端队列和优先队列的核心操作方法,供开发者参考使用。

    上一篇:PKUSC2018游记
    下一篇:pku 2400 Supervisor, Supervisee KM求最小权匹配+DFS回溯解集

    发表评论

    最新留言

    不错!
    [***.144.177.141]2026年05月29日 13时02分02秒