STL queue一些操作

C++ queue(STL queue) 一些操作

queue 容器可以用来表示超市的结账队列或服务器上等待执行的数据库事务队列。
只能访问 queue 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。
在这里插入图片描述

queue 和 stack 有一些成员函数相似,但在一些情况下,工作方式有些不同:
front():返回 queue 中第一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
back():返回 queue 中最后一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
push(const T& obj):在 queue 的尾部添加一个元素的副本。这是通过调用底层容器的成员函数 push_back() 来完成的。
push(T&& obj):以移动的方式在 queue 的尾部添加元素。这是通过调用底层容器的具有右值引用参数的成员函数 push_back() 来完成的。
pop():删除 queue 中的第一个元素。
size():返回 queue 中元素的个数。
empty():如果 queue 中没有元素的话,返回 true。
emplace():用传给 emplace() 的参数调用 T 的构造函数,在 queue 的尾部生成对象。
swap(queue &other_q):将当前 queue 中的元素和参数 queue 中的元素交换。它们需要包含相同类型的元素。也可以调用全局函数模板 swap() 来完成同样的操作。
(详细的queue介绍)

///BFS合并二叉树,利用stl<queue>
class Solution {
public:
    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
        if (!t1 || !t2)
            return t1==nullptr? t2 : t1;
        TreeNode* ans = t1;
        queue<TreeNode*> q;//创建队列容器
        q.push(t1); q.push(t2);//入队
        while (!q.empty()) {
            t1 = q.front(); q.pop();//front返回第一个,pop删除
            t2 = q.front(); q.pop();
            t1->val += t2->val;

            if (t1->left && t2->left) {
                q.push(t1->left);
                q.push(t2->left);
            }
            else if (!t1->left) {
                t1->left = t2->left;
            }

            if (t1->right && t2->right) {
                q.push(t1->right);
                q.push(t2->right);
            }
            else if (!t1->right) {
                t1->right = t2->right;
            }
        }
        return ans;
    }
};
STL(Standard Template Library)中的 queue 是一个常用的容器适配器,用于实现先进先出(FIFO)的数据结构。它基于 deque(双端队列)实现,并提供了一些操作函数来操作队列中的元素。 你可以使用 <queue> 头文件来包含 queue 容器适配器的定义。以下是一些 queue 的常用操作: 1. push(element):将元素添加到队列的末尾。 2. pop():移除队列的第一个元素。 3. front():返回队列的第一个元素,但并不移除它。 4. back():返回队列的最后一个元素,但并不移除它。 5. empty():检查队列是否为空,如果为空则返回 true,否则返回 false。 6. size():返回队列中元素的个数。 下面是一个简单的示例代码,演示了如何使用 queue 容器适配器: ```cpp #include <iostream> #include <queue> int main() { std::queue<int> myQueue; myQueue.push(1); myQueue.push(2); myQueue.push(3); std::cout << "Front element: " << myQueue.front() << std::endl; std::cout << "Back element: " << myQueue.back() << std::endl; myQueue.pop(); std::cout << "Front element after popping: " << myQueue.front() << std::endl; std::cout << "Queue size: " << myQueue.size() << std::endl; return 0; } ``` 这个示例代码创建了一个整数类型的队列,并使用 push() 函数将三个元素添加到队列中。然后,使用 front() 和 back() 函数分别获取队列的第一个元素和最后一个元素,并使用 pop() 函数移除第一个元素。最后,使用 size() 函数获取队列中剩余元素的个数。 希望这个简单的示例能帮助你理解 queue 的基本用法。如果你还有其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值