C++ queue容器适配器-队列
queue容器适配器
#include<iostream>#include<queue>/* queue 容器适配器 元素只能从对尾压入,从队首弹出(排队) 底层容器:deque、list queue 本身没有迭代器 */// 使用函数模板template<typenameT>voiddisplay(std::queue<T>s){while(!s.empty())// 不为空 则执行{T elem=s.front();//读取栈顶元素std::cout<<elem<<" ";s.pop();// 弹出栈顶元素}std::cout<<std::endl;};intmain(){std::queue<int>s;for(autoi:{1,2,3,4,5})s.push(i);// 放入栈中display(s);std::cout<<"队首元素:"<<s.front()<<std::endl;std::cout<<"队尾元素:"<<s.back()<<std::endl;s.push(10);display(s);s.pop();s.pop();display(s);// 清空方法while(!s.empty()){s.pop();}std::cout<<"元素总数:"<<s.size()<<std::endl;s.push(1);s.push(2);s.push(3);s.push(4);s.push(5);display(s);// 修改s.front()=0;// 首s.back()=0;// 尾display(s);}队列
函数 功能
push(val) 向队尾插入元素 val
pop() 删除队首元素(无返回值)
front() 返回队首元素的引用(可修改)
back() 返回队尾元素的引用(可修改)
empty() 判断队列是否为空(空返回 true)
size() 返回队列中元素的个数
#include<iostream>// 用于输入输出#include<queue>// 核心头文件:std::queue#include<string>// 示例中用到字符串类型intmain(){// 1. 定义一个存储整数的队列(默认底层用deque实现)std::queue<int>num_queue;// 2. 向队列尾部插入元素(入队)num_queue.push(10);num_queue.push(20);num_queue.push(30);std::cout<<"初始队列:队首="<<num_queue.front()<<",队尾="<<num_queue.back()<<",大小="<<num_queue.size()<<"\n\n";// 3. 访问并修改队首/队尾元素(注意:仅当队列非空时才能访问)if(!num_queue.empty()){num_queue.front()=100;// 修改队首元素(10 → 100)num_queue.back()=300;// 修改队尾元素(30 → 300)std::cout<<"修改后:队首="<<num_queue.front()<<",队尾="<<num_queue.back()<<",大小="<<num_queue.size()<<"\n\n";}// 4. 遍历并弹出队列所有元素(出队)std::cout<<"遍历并弹出队列元素:\n";while(!num_queue.empty()){// 先获取队首元素intfront_val=num_queue.front();std::cout<<"弹出队首:"<<front_val<<"\n";// 弹出队首(必须先获取值,再pop,因为pop无返回值)num_queue.pop();}std::cout<<"弹出后队列是否为空:"<<(num_queue.empty()?"是":"否")<<"\n\n";// 5. 扩展示例:存储自定义类型(比如字符串)std::queue<std::string>str_queue;str_queue.push("苹果");str_queue.push("香蕉");str_queue.push("橙子");std::cout<<"字符串队列 - 队首:"<<str_queue.front()<<",队尾:"<<str_queue.back()<<"\n";return0;}