欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STL之queue容器使用大全

程序员文章站 2024-03-17 23:45:40
...

1. queue概念

     queue是一种提供FIFO(先进先出)行为的标准容器,它满足容器的大多数要求。本质它不是真正的容器,而是一个适配器。因为它并未定义与迭代器有关的任何内容及接口。它持有另一个容器,并为该容器提供包装器接口。包装器强制执行严格的先进先出队列行为。第二个模板参数定义了底层序列/容器的类型。它的默认值是std::deque,但是它可以是任何支持 front、 back、push_back和 pop_front的类型,比如std::list或适当的用户定义类型。queue的定义可以参见 stl_queue.h 。即:template <class T,class Container = deque <T>> class queue;
     

2. queue成员函数

·empty() 判断queue容器是否为空
·size() 返回当前queue容器的大小(既有多少元数据)
·front() 访问queue容器的第一个(首部)元素
·back() 访问queue容器的(尾部)最后一个元数据
·push() 向queue容器中插入新的元数据
·emplace() 构造并插入元数据
·pop() 删除下一个元数据
·swap() 交互两个queue容器的内容
     

2.1 queue示例程序

     该示例程序演示了queue队列中各成员函数的使用规则。

queue<int> qList; //1. 创建一个空的queue队列
queue<int> bList;
for(int i = 0; i < 10; ++i)
{
	qList.push(i + 1);  //2. 向队列qList中插入10个元数据
}

cout<<"--------------------------------------"<<endl;
//3. 输出qLis队列的大小,共包含了10个元数据
cout<<"qList size: "<<qList.size()<<endl; 
//4. 判断qList队列是否为空, 若为空--true(1), 不为空--false(0)
cout<<"qList empty: "<<qList.empty()<<endl;
//5. 输出qList队列的所有元数据,前提条件是当其不为空时
while(!qList.empty())
{
	//6. 输出qList队列的第一个(队首)元素
	cout<<qList.front()<<" ";
	//7. 将队首元数据从当前qList队列中移除掉(删除)
	qList.pop();
}
cout<<endl;
cout<<"--------------------------------------"<<endl;
//8. 再次打印队列qList的大小, 因为前面已经全部移除掉,因此这里大小是0
cout<<"qList size(2): "<<qList.size()<<endl;
//9. bList队列采用默认初始化,因此没有元数据,其大小为0
cout<<"bList size: "<<bList.size()<<endl;
//10.bList队列为空
cout<<"bList empty: "<<bList.empty()<<endl;
cout<<"--------------------------------------"<<endl;
//11. 构造数据向qList中插入数字1,3,5
qList.emplace(1);
qList.emplace(3);
qList.emplace(5);

//12. 交换两个容器的数据,此后,qList大小为0, 则bList队列大小为3.
bList.swap(qList);
//13. bList队列大小为3
cout<<"bList size: "<<bList.size()<<endl;
//14. bList容器有3个元数据,因此,不为空=0
cout<<"bList empty: "<<bList.empty()<<endl;
cout<<"--------------------------------------"<<endl;
while(!bList.empty())
{
	cout<<bList.front()<<" ";
	bList.pop();
}
cout<<endl;
cout<<"--------------------------------------"<<endl;

     该示例程序的输出结果是:

--------------------------------------
qList size: 10
qList empty: 0
1 2 3 4 5 6 7 8 9 10
--------------------------------------
qList size(2): 0
bList size: 0
bList empty: 1
--------------------------------------
bList size: 3
bList empty: 0
--------------------------------------
1 3 5
--------------------------------------

     

3. queue应用场景

     
     
     

4. queue源码

     
     
     

5. queue如何有效清空内存空间

6. queue线程安全吗?

7. 总结

     
     
     
     
     
     
     

相关标签: STL