C++之queue模板类

时间:2021-09-10 16:35:10

1.queue常用成员函数

   ①size()       返回队列中元素的个数
②empty() 如果队列空则返回真 
③back() 返回最后一个元素引用即队尾。
④front() 返回第一个元素引用即队首。
⑤pop() 删除第一个元素,即队首元素。不返回 
⑥push() 在末尾加入一个元素,即放置在队尾 。不返回

2.结构体和指针类queue

注意:指针使用应该初始化,指针压栈效率更高。

#include"iostream"
#include"queue"
using namespace std;
typedef struct Data{
int data;
} mydata;
void initialization(mydata src[10])
{
for(int i=0;i<10;i++)
src[i].data=i;
}
int _tmain(int argc, _TCHAR* argv[])
{
queue<mydata*> *myQueue=new queue<mydata*>; //指针一定初始化
mydata src[10];
initialization(src);
for(int i=0;i<10;i++)
myQueue->push(&src[i]);//指针压栈效率更高
cout<<"最前和最后的元素是 "<<myQueue->front()->data<<" "<<myQueue->back()->data<<endl;
myQueue->pop();
cout<<"最前和最后的元素是 "<<myQueue->front()->data<<" "<<myQueue->back()->data<<endl; return 0;
}

3.queue的深拷贝

    ①使用front()返回队首元素至某个变量,给变量的数据区数据改变不影响源队列元素的值
②“=”可以直接深拷贝队列。从queue变量作函数参数可知。
#include"iostream"
#include"queue"
void print(queue<char> myQueue)
{
while(!myQueue.empty())
{cout<<myQueue.front()<<endl;
myQueue.pop();}
}
int _tmain(int argc, _TCHAR* argv[])
{
queue<char> myQueue1;
myQueue1.push('a');
myQueue1.push('b');
print(myQueue1);//形参深拷贝
print(myQueue1); //仍旧能够输出 char temp=myQueue1.front();
cout<<temp<<endl;//输出a
temp='c';
cout<<myQueue1.front()<<endl;//输出a
myQueue1.pop();
temp=myQueue1.front();
cout<<temp<<endl;//输出b
return 0;
}

4.其他

(1)queue不提供元素的随机访问、遍历和删除操作。

(2)可以使用swap函数交换两个同类型对象的内部值