攻城狮凌风

C++之queue模板类

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函数交换两个同类型对象的内部值



posted on 2014-11-10 15:12  攻城狮凌风  阅读(852)  评论(0编辑  收藏  举报

导航