c++ STL deque容器成员函数

deque是双向队列,即可以在头部插入删除,也可以在尾部插入删除。内部并不连续,这一点和vector并不一样。可能第1个元素和第2个元素的地址是不连在一起的。在使用时用it迭代器会安全一点。

这是c++ 98标准的,不是c++11的。11标准新加的函数没在这里说明。里面大部分函数是经过测试的才得出的结论。

函数(下面将iterator简化为it)

描述

Void c.assign(it beg,it end)
void c.assign(it n,元素类型  elem) 

将拷贝[beg; end)区间中的数据用覆盖式地赋值给c2个参数是不包含元素的。
nelem的赋值给c

这两个函数均会将原来的容器清空再赋值。Iteratorc相同的容器类型。

it c.at(int idx) 

传回索引idx所指的数据,idx0开始,如果idx越界,抛出out_of_range

reference c.back() 

传回最后一个数据,不检查这个数据是否存在。只传不删。注意返回值与begin不同。

it c.begin() 

传回迭代器中的第一个数据地址。返回的是第1个数据的地址,即iterator

Void c.clear() 

移除容器中所有数据,被清空了,再访问里面的数据会出错。

Void c.empty() 

判断容器是否为空。返回值为bool型。若空则返true,若非空返false

it c.end() 

指向迭代器中的最后一个数据的下一个数据的地址,该地址是没有元素的,与begin搭配的。若容器为空,返回与begin同样地址。

It c.erase(it pos)
it c.erase(it beg,it end) 

删除pos位置的数据,传回下一个数据的位置。
删除[beg,end)区间的数据,传回下一个数据的位置。2个参数是最后一个元素的首地址,即该地址是有元素的。

Reference c.front() 

传回容器中第一个数据,不检查这个数据是否存在。只传不删。

c.get_allocator()

使用构造函数返回一个拷贝。//此函数暂不知道怎么用,windows下不太一样。原型allocator_type get_allocator() const;

It c.insert(it pos,元素类型 elem) 
void c.insert(it pos,int n,元素类型 elem)
void c.insert(it pos,it beg,it end)

pos位置插入一个elem元素拷贝,传回新数据位置。逻辑上pos处的元素就往后移了。
pos位置插入nelem元素。
pos位置插入在[beg,end)区间的数据,这些数据也是属于容器中的。end没有实际元素。

Int c.max_size() 

返回容器中可容纳多少个元素。不同类型的deque,可容纳数量不同。

Void c.pop_back() 

删除最后一个数据。

Void c.pop_front() 

删除头部数据。

Void c.push_back(元素类型 elem) 

在尾部加入一个数据。

Void c.push_front(元素类型 elem) 

在头部插入一个数据。

It c.rbegin() 

传回一个逆向队列的第一个数据的地址。使用这两个可以逆向输出。

It c.rend() 

传回一个逆向队列的最后一个数据的下一个位置的地址。

Void c.resize(int num,可选的默认值) 

重新指定队列的元素数量为num个。2种情况:1.num比存在的元素个数要少,则删除尾部的元素以调整个数。2.num比实际存在的元素要多,则在实际元素之后填充默认值以调整个数。(第2个元素为可选,若没有则默认为该类型的默认值)

Int c.size() 

返回容器中目前存放了多少个元素。(这个和max_size不同)

Void c1.swap(deuqe c2) 
void swap(deque c1,deque c2)

c1c2中的元素互换,c1c2都是同一类型的deque
作用同上,这个可以直接用。

deque<Elem> c
deque<Elem> c1(deque c2)
Deque<Elem> c(int n)
Deque<Elem> c(int n, 类型 elem)
Deque<Elem> c(it beg,it end)
c.~deque<Elem>() 

创建一个空的dequeElem可以为intchar等等很多种类型。
c2初始化为c1,相当于复制出一个队列副本
创建一个deque,含有n个数据,数据均由缺省值在创建时初始化。
创建一个含有nelem拷贝的deque
创建一个以[beg;end)区间的deque
销毁所有数据,释放内存,但是c还可以继续使用,只不过包含的元素个数为0

 

转载于:https://www.cnblogs.com/xcw0754/p/4263488.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqlserver中判断表或临时表是否存在

转自&#xff1a;http://www.cnblogs.com/yugen/archive/2010/07/25/1784749.html 1、判断数据表是否存在 方法一&#xff1a; use yourdb;go if object_id(Ntablename,NU) is not nullprint 存在else print 不存在 例如&#xff1a;use fireweb;go if object_id(NTEMP_TBL,NU)…

Mysql数据库正则表达式

1.基本字符的匹配 SELECT * FROM a1 WHERE name regexp 1000 #匹配名称含有1000的所有行 SELECT * FROM a1 WHERE name regexp .000 #匹配以000结尾的所有行&#xff0c;(.正则中表示&#xff1a;匹配任意一个字符) 从中可以看到正则表达式能够模拟LIKE使用通配符&#xff0c…

android项目 之 记事本(6)----- 加入手写

想必大家都用过QQ的白板功能&#xff0c;里面主要有两项&#xff0c;一个是涂鸦功能&#xff0c;事实上类似于上节的画板功能&#xff0c;而还有一个就是手写&#xff0c;那记事本怎么能没有这个功能呢&#xff0c;今天就来为我们的记事本加入手写功能。 先上图&#xff0c;看看…

HTTP协议中常见请求方法以及一些常见错误代码

GET&#xff1a; 请求指定的页面信息&#xff0c;并返回实体主体。 HEAD&#xff1a; 只请求页面的首部。 POST&#xff1a; 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。 PUT&#xff1a; 从客户端向服务器传送的数据取代指定的文档的内容。 DELETE&#xff…

license文件生成原理

byte解密weblogic加密oraclehex现在很多J2EE应用都采用一个license文件来授权系统的使用&#xff0c;特别是在系统购买的早期&#xff0c;会提供有限制的license文件对系统进行限制&#xff0c;比如试用版有譬如IP、日期、最大用户数量的限制等。 而license控制的方法又有很…

linux常用关机命令及其区别-Shutdown halt reboot init

1.shutdown shutdown命令安全地将系统关机。 shutdown 参数说明: [-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。 [-r] 重启计算器。 [-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。 [-h] 关机后关闭电源〔halt〕。 [-n] 不用init﹐而是自己来关机。不鼓…

CSS3动画@keyframes中translate和scale混用出错问题

在写基于网页的2048时&#xff0c;想让一个元素出现时已经通过translate属性固定在指定位置&#xff0c;同时显示动画scale(0)-->scale(1)&#xff0c;以实现放大出现效果。 CSS代码为 -webkit-keyframes mymove_failed{0% {-webkit-transform:translate(50px,50px) scale…

metero学习

博客园首页新随笔联系订阅管理最新随笔 最新评论 node.js相关的中文文档及教程 (转) Posted on 2013-08-30 10:40 小小清清 阅读(61) 评论(0) 编辑 收藏 node.js api中英文对照: http://docs.cnodejs.net/cman/ node.js入门中文版: http://nodebeginner.org/index-zh-cn.html e…

Linux统计单个文件统计

语法&#xff1a;wc [选项] 文件… 说明&#xff1a;该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名&#xff0c;则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 该命令各选项含义如下&#xff1a; - c 统计字节数…

jQuery慢慢啃之事件对象(十一)

1.event.currentTarget//在事件冒泡阶段中的当前DOM元素 $("p").click(function(event) {alert( event.currentTarget this ); // true }); 2.event.data//当前执行的处理器被绑定的时候&#xff0c;包含可选的数据传递给jQuery.fn.bind。 $("a").ea…

Linuxcurl命令参数详解

Linuxcurl是通过url语法在命令行下上传或下载文件的工具软件&#xff0c;它支持http,https,ftp,ftps,telnet等多种协议&#xff0c;常被用来抓取网页和监控Web服务器状态。1.linuxcurl抓取网页&#xff1a;抓取百度&#xff1a;curlhttp://www.baidu.com如发现乱码&#xff0c;…

android解析XML总结(SAX、Pull、Dom三种方式)

在android开发中&#xff0c;经常用到去解析xml文件&#xff0c;常见的解析xml的方式有一下三种&#xff1a;SAX、Pull、Dom解析方式。 今天解析的xml示例&#xff08;channels.xml&#xff09;如下&#xff1a; 1 <?xml version"1.0" encoding"utf-8"…

查看Eclipse中的jar包的源代码:jd-gui.exe

前面搞了很久的使用JAD&#xff0c;各种下载插件&#xff0c;最后配置好了&#xff0c;还是不能用&#xff0c;不知道怎么回事&#xff0c; 想起一起用过的jd-gui.exe这个工具&#xff0c;是各种强大啊&#xff01;&#xff01;&#xff01; 只需要把jar包直接扔进去就可以了&a…

maven scope含义的说明

compile &#xff08;编译范围&#xff09; compile是默认的范围&#xff1b;如果没有提供一个范围&#xff0c;那该依赖的范围就是编译范围。编译范围依赖在所有的classpath 中可用&#xff0c;同时它们也会被打包。 provided &#xff08;已提供范围&#xff09; provided 依…

此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求...

FirFox打开80以外的端口&#xff0c;会弹出以下提示&#xff1a; “此地址使用了一个通常用于网络浏览以外的端口。出于安全原因&#xff0c;Firefox 取消了该请求。”。 解决方法如下&#xff1a; 在Firefox地址栏输入about:config,然后在右键新建一个字符串键network.securit…

Java操作shell脚本

public class Exec {private static ILogger logger LoggerFactory.getLogger(Exec.class);public Exec() {super();}/*** 执行命令&#xff08;如Shell脚本&#xff09;<br>* * param cmd 操作命令* param timeout 超时时间* return 命令执行过程输出内容* * throws IO…

Mysql更新插入

在向表中插入数据的时候&#xff0c;经常遇到这样的情况&#xff1a;1. 首先判断数据是否存在&#xff1b; 2. 如果不存在&#xff0c;则插入&#xff1b;3.如果存在&#xff0c;则更新。 在 SQL Server 中可以这样处理&#xff1a; if not exists (select 1 from t where id …

信息加密之信息摘要加密MD2、MD4、MD5

对于用户数据的保密一直是各个互联网企业头疼的事&#xff0c;那如何防止用户的个人信息泄露呢&#xff1f;今天为大家介绍一种最简单的加密方式--信息摘要算法MD。它如何来保护用户的个人信息呢&#xff1f;其实很简单&#xff0c;当获得到用户的信息后&#xff0c;先对其进行…

Java 从网络上下载文件

/*** 下载文件到本地 */public static void downloadPicture(String imageUrl, String filename){ URL url;try {url new URL(imageUrl);//打开网络输入流DataInputStream dis new DataInputStream(url.openStream());//建立一个新的文件FileOutputStream fos new FileOutp…

An error was encountered while running(Domain=LaunchSerivcesError, Code=0)

今天突然遇到这样一个错误&#xff0c;编译可以通过&#xff0c;但是运行就会弹出这个错误提示&#xff1a; An error was encountered while running(DomainLaunchSerivcesError, Code0) 解决办法就是重置模拟器。 点击模拟器菜单中的Reset Contents and Settings&#xff0c;…