概述:
queue容器是一个队列,非常简单,它不支持迭代器,不支持随机访问,并且是一个单向队列,只能从尾部插入,头部删除。常用的方法是利用其先进先出的特性去接收消息,然后处理消息,例如车站的排队。当然list容器也可以实现先进先出,看你喜欢用哪一个,效率都差不多。
但是这里需要注意一点,不管是list或者queue,都需要自己去控制实现先进先出。
1 queue队列容器案例
由于queue队列容器非常简单,并且不支持迭代器,所以不需要测试是否会造成迭代器失效的例子。下面直接给出一个案例,项目中一般使用都是按照先进先出的方法使用即可,当然,多线程下记得加锁。
void test10() {
queue<Person> q;
Person p1("大娃", 1, 20);
Person p2("二娃", 2, 30);
Person p3("三娃", 3, 30);
Person p4("四娃", 4, 40);
Person p5("五娃", 5, 50);
Person p6("爷爷", 6, 60);
Person p7("蛇精", 7, 70);
//入队
q.push(p1); //只能从尾添加
q.push(p2);
q.push(p3);
q.push(p4);
q.push(p5);
q.push(p6);
q.push(p7);
while (!q.empty()){
Person pFront = q.front();//获取队头元素
cout << "姓名: " << pFront.m_name << " 年龄: " << pFront.m_age << endl;
q.pop();//出队,只能从头删除
/*以上已经实现先进先出*/
}
cout << "队列的大小为: " << q.size() << endl;
}
结果可以看到,依次入队,并且依次出队。