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

C++之queue模板类的更多相关文章

  1. 基于ACE的定时器模板类

    ACETimerClockGenerator.h ClockGeneratorIF.h 在类中定义一个结构体,在结构体中定义一个函数. 在结构体中定义一个函数,这样做有什么好呢? TimerHandl ...

  2. STL标准模板类

    STL,中文名标准模板库,是一套C++的标准模板类(是类!),包含一些模板类和函数,提供常用的算法和数据结构. STL分为:迭代器,容器,适配器,算法以及函数对象. --迭代器是一种检查容器内元素并遍 ...

  3. C++模板类内友元(友元函数,友元类)声明的三种情况

    根据<C++ Primer>第三版16.4节的叙述,C++类模板友元分为以下几种情况 1.非模板友元类或友元函数. 书上给了一个例子: class Foo{     void bar(); ...

  4. 单链表的C++实现(采用模板类)

    采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作.  链表结构定义 定义单链表 ...

  5. 模板类 error LNK2019: 无法解析的外部符号

    如果将类模板的声明和实现写在两个独立的文件中,在构建时会出现"error LNK2019: 无法解析的外部符号 "的错误. 解决方法有: 第一种方法,就是把类模板中成员函数的声明和 ...

  6. 关于g++编译模板类的问题

    今天搞了我接近4个小时,代码没错,就是调试没有通过,无论怎么也没有想到是编译器的问题 g++不支持c++模板类 声明与实现分离,都要写到.h文件里面. 以后记住了.

  7. C++11特性(模板类 initializer_list)

    [1]initializer_list模板类 C++primer 原文如下: 通读原文相关篇幅,分析解读内容如下: 提供initializer_list类的初衷,为了便于将有限个同一类型(或可转换为同 ...

  8. C++11模板类使用心得

    1.推荐使用std::shared_ptr<TaskT>代替指针TaskT*使用,shared_ptr是一种智能指针,能自主销毁释放内存,在c++11中被引入,在多线程编程中有很大的用处, ...

  9. c++模板类

    c++模板类 理解编译器的编译模板过程 如何组织编写模板程序 前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”.看看我们几乎每天都能遇到的模板类吧,如S ...

随机推荐

  1. HDU2612 -暑假集训-搜索进阶N

     http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/N这两天总是因为一些小错误耽误时间,我希望自己可以细心点.珍惜 ...

  2. Luogu-2657 [SCOI2009]windy数

    很少做数位\(dp\)的题,做道题学习一下吧. 记忆化搜索,\(f[10][10][2][2]\)分别记录当前位置,上一位数,是否有前导零和是否有大小上限. 题目要满足相邻两个数相差不小于2,如果有前 ...

  3. JAVA- 切换默认的Java

    删除自带的java yum remove java java -version发现还有java,因为电脑上安装了多个版本的java,这时我们可以用 yum groupremove java 通过组的这 ...

  4. 解析XML(2)

    在输入法非中文状态下使用ctrl+shift+f可以使文档换行.

  5. Linux课程---10、权限管理(权限有哪几种)

    Linux课程---10.权限管理(权限有哪几种) 一.总结 一句话总结: r 读 w 写 x 执行 1.drwxr-x---  2 root root  4096 Jan 20 19:39 mnt ...

  6. Android 布局文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  7. Unity3D之Mesh(五)绘制圆

    前言: Unity3D中Mesh的基本单位是三角形,而圆形就是由许许多多的三角形组成的.那么我们就知道了绘制圆形的Mesh需要两个变量:圆的半径  以及分割数: 一.实现过程 基本过程与之前的类似,最 ...

  8. (转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  9. ROS 负载均衡

    [xuan89@MikroTik] > :for i from=1 to=$z do= {/ip firewall mangle add action=mark-connection chain ...

  10. python实现无序列表:链表

    介绍链表前我们先了解下什么是列表. 在对基本数据结构的讨论中,我们使用 Python 列表来实现所呈现的抽象数据类型.列表是一个强大但简单的收集机制,为程序员提供了各种各样的操作.然而,不是所有的编程 ...