queue与 priority

    技术2022-07-20  63

    queue常用函数

    push() 在队尾插入一个元素

    pop() 将队列中最靠前位置的元素拿掉,是没有返回值的void函数

    size() 返回队列中元素的个数,返回值类型为unsigned int

    empty() 判断队列是否为空的,如果为空则返回true

    front() 返回值为队列中的第一个元素,也就是最早、最先进入队列的元素。注意这里只是返回最早进入的元素,并没有把它剔除出队列

    back() 返回队列中最后一个元素,也就是最晚进去的元素

    emplace():类似于insert

    swap(queue &other_q):将当前 queue 中的元素和参数 queue 中的元素交换。它们需要包含相同类型的元素。也可以调用全局函数模板 swap() 来完成同样的操作。

    priority_queue

    使用时包含头文件 #include < queue > 和queue不同,它可以定义其中数据的优先级,功能相当于构建了一个大顶堆或小顶堆。

    定义:priority_queue<Type, Container, Functional>

    Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆

    例如:使用了 priority_queue pq; 等同于 priority_queue<int, vector, less > pq;

    //升序队列 即小顶堆 priority_queue <int,vector<int>,greater<int> > pq; //降序队列 即大顶堆 priority_queue <int,vector<int>,less<int> >pq; //对于基础类型 默认是大顶堆 priority_queue<int> pq; //等同于 priority_queue<int, vector<int>, less<int> > pq;

    与queue不同的是,不能使用front()访问队头元素,而应该使用top()

    Processed: 0.015, SQL: 9