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函数交换两个同类型对象的内部值
C++之queue模板类的更多相关文章
- 基于ACE的定时器模板类
ACETimerClockGenerator.h ClockGeneratorIF.h 在类中定义一个结构体,在结构体中定义一个函数. 在结构体中定义一个函数,这样做有什么好呢? TimerHandl ...
- STL标准模板类
STL,中文名标准模板库,是一套C++的标准模板类(是类!),包含一些模板类和函数,提供常用的算法和数据结构. STL分为:迭代器,容器,适配器,算法以及函数对象. --迭代器是一种检查容器内元素并遍 ...
- C++模板类内友元(友元函数,友元类)声明的三种情况
根据<C++ Primer>第三版16.4节的叙述,C++类模板友元分为以下几种情况 1.非模板友元类或友元函数. 书上给了一个例子: class Foo{ void bar(); ...
- 单链表的C++实现(采用模板类)
采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作. 链表结构定义 定义单链表 ...
- 模板类 error LNK2019: 无法解析的外部符号
如果将类模板的声明和实现写在两个独立的文件中,在构建时会出现"error LNK2019: 无法解析的外部符号 "的错误. 解决方法有: 第一种方法,就是把类模板中成员函数的声明和 ...
- 关于g++编译模板类的问题
今天搞了我接近4个小时,代码没错,就是调试没有通过,无论怎么也没有想到是编译器的问题 g++不支持c++模板类 声明与实现分离,都要写到.h文件里面. 以后记住了.
- C++11特性(模板类 initializer_list)
[1]initializer_list模板类 C++primer 原文如下: 通读原文相关篇幅,分析解读内容如下: 提供initializer_list类的初衷,为了便于将有限个同一类型(或可转换为同 ...
- C++11模板类使用心得
1.推荐使用std::shared_ptr<TaskT>代替指针TaskT*使用,shared_ptr是一种智能指针,能自主销毁释放内存,在c++11中被引入,在多线程编程中有很大的用处, ...
- c++模板类
c++模板类 理解编译器的编译模板过程 如何组织编写模板程序 前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”.看看我们几乎每天都能遇到的模板类吧,如S ...
随机推荐
- spring-boot4
1.1.1. Starter pom 除了官方也有其他第三方提供的starter Websocket是服务端推数据到客户端.长连接. 1.1.1.Xml 配置文件 有些时候必须使用xml配置. 1.1 ...
- 第一篇 css导入方式 及选择器
一 推荐资料 推荐书籍 css Zen Garden 中文(css禅意花园) 二.css样式 1.css样式表特征 继承性 大多数css的样式规则可以被继承 层叠性 1)可以定义 多个样式 2)不冲 ...
- hid_info函数分析
昨天博文<linux下无线鼠标驱动执行流程>中有一行输出信息很让我迷惑,如下所示: [ :1D57: Mouse [HID Wireless Mouse HID Wireless Mous ...
- Unity Json解析IPA
今天看到一个unity 自带的解析json的IPA,感觉比litjson好用很多,废话不多,上代码 using System.Collections; using System.Collections ...
- django 之admin后台管理
数据库 from django.db import models from django.contrib.auth.models import User from django.contrib.aut ...
- centos5.5源更新方法(网易163源 很快的源)
http://blog.chinaunix.net/uid-24993824-id-189965.html 1.首先,打开终端,获取root权限 2.关闭fastestmirror插件 ...
- MySQL- SQL UNION 和 UNION ALL 操作符
在数据库查询中我们常常遇到这样一种情况,想把两个子查询的结果合并在一起变成一条 sql 去执行而不是多个sql分次执行.只是后我们就可以使用 UNION 和 UNION ALL 操作符来操作了. SQ ...
- HTML5坦克大战1
在JavaScript中,不要在变量为定义之前去使用,这样很难察觉并且无法运行. 颜色不对. 当我的坦克移动时,敌人坦克消失. tankGame3.html <!DOCTYPE html> ...
- c# ListBox
1. ListBox用法(http://www.cnblogs.com/chinahbzm/articles/3577285.html) 2. ListBox使用(http://www.cnblogs ...
- Java_基础_02_ThreadLocal
二.参考资料 1.ThreadLocal 那点事儿 2.彻底理解ThreadLocal