stl之deque双端队列容器[通俗易懂]

stl之deque双端队列容器

大家好,又见面了,我是全栈君。

deque与vector很相似,不仅能够在尾部插入和删除元素,还能够在头部插入和删除。

只是当考虑到容器元素的内存分配策略和操作性能时。deque相对vector较为有优势。

头文件

#include<deque>

创建deque对象

1)deque();//创建一个没有不论什么元素的deque对象。

deque<int> d

2)deque(size_typen);//创建一个具有n个元素的deque对象。每一个元素採用它的类型下的默认值。

deque<int> d(10);//deque对象d有10个元素,每一个元素初始值为0。

3)deque<size_type n, constT& value); //创建一个具有n个元素的deque对象,这些元素的初始值为value

deque<double> d(10,5);

4)deque(const deque&);//deque的拷贝构造函数,通过拷贝一个deque对象的元素值。创建一个新的deque对象。

deque<char> d1(5,’a’);
deque<char> d2(d1);

5)deque(constInputIterator first, const InputIterator last, const A& a=A());

//将迭代区间[first,last)所指的元素复制到一个新创建的deque对象中,当中内存分配器可缺省。

//利用int数组iArray,创建一个deque对象d
int iArray[]={1,2,3,4,5,6,7};
deque<int> d(iArray, iArray+7);

初始化赋值

利用deque提供的push_back()函数,可在尾部压入新元素value。经常使用作deque容器的初始化赋值。

元素的遍历訪问

分别用数组方式迭代器方式訪问deque元素。

#include <deque>
#include <iostream>	
using namespace std; 
int main(void)
{
	deque<int> d;
	int i;
	d.push_back(13);
	d.push_back(32);
	d.push_back(29);
	cout<<"数组方式訪问deque元素:"<<endl;
	for(i=0; i < d.size(); i++)
		cout << "d[" << i << "] = " << d[i] << endl;  
	deque<int>::iterator j,jend;//定义迭代器
	jend=d.end();
	cout<<"迭代器訪问deque元素:"<<endl;
	for (i=0,j=d.begin(); j!=jend;i++,j++)
	{
		cout << "d[" << i << "] = " << *j << endl; 
	}
	return 0;
}

stl之deque双端队列容器[通俗易懂]

元素的插入

因为deque使用了两个迭代器分别指向双端队列的首尾,因此deque具有高效的头部插入元素的函数push_front()。中间位置的插入用insert()函数。

void push_front(constT&);//头部插入

iterator insert(iterator pos, const T& x);//pos位置之前,插入新元素x

#include <deque>
#include <iostream>
using namespace std;
int main(void)
{	
	deque<int> d;
	d.push_back(6);
	d.push_back(7);   
	//头部插入
	d.push_front(5);
	for(int i=0; i<d.size(); i++)  //打印6 7
		cout << d[i] << ' ';
	cout << endl;
	//中间位置插入
	d.insert(d.begin() +1 ,9);     //在第个元素前插入,即9 6 7
	for(int j=0; j<d.size(); j++)
		cout << d[j] << ' ';
	cout << endl;
	return 0;
}

stl之deque双端队列容器[通俗易懂]

元素的删除

deque容器提供了删除首元素的pop_front函数。删除尾元素的pop_back函数。删除任何位置或迭代区间上元素的erase函数。以及删除全部元素的clear函数。

1)void pop_front();//删除deque的第一个元素

2)void pop_back();//删除deque的最后一个元素

3)iterator erase(iteratorpos); //删除pos所指向的元素

4)iterator erase(iterator first, iterator last);//删除迭代区间[first,last)所指向的全部元素

5)void clear();//删除全部元素

#include <deque>
#include <iostream>
using namespace std;
int main(void)
{	
	deque<int> d;
	d.push_back(4);
	d.push_back(5);
	d.push_back(1);
	d.push_back(1);
	d.push_back(1);
	d.push_back(6);
	for(int i=0; i<d.size(); i++)
		cout << d[i] << ' ' ;
	cout << endl;
	//头尾和任何位置删除元素
	d.erase(d.begin() +1);
	d.pop_front();
	d.pop_back();
	for(int j=0; j<d.size(); j++)
		cout << d[j] << ' ' ;
	cout << endl;
	//删除所有元素
	d.clear();
	cout << "运行clear()" <<endl << "deque元素所有清除" << endl;
	return 0;
}

stl之deque双端队列容器[通俗易懂]

其它函数与vector容器相似,这里不再赘述。详细可看前篇vector的应用

此文为本人原创。转载请注明出处:
http://blog.csdn.net/lsh_2013/article/details/46737877

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115510.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机键盘win键,win10键盘win键失灵怎么办_电脑win10win键没反应的解决方法

    计算机键盘win键,win10键盘win键失灵怎么办_电脑win10win键没反应的解决方法最近有朋友问小编win10键盘win键失灵怎么办,对于win10系统win键突然不能用的问题,相信很多朋友遇到过。有的朋友在升级完win10系统之后发现win10键盘win键失灵了,按下win键没反应,那么当我们遇到这种问题应该如何解决呢?别着急,小编这就为大家带来电脑win10win键没反应的解决方法。电脑win10win键没反应的解决方法:1、在Windows10系统桌面,右键点击任务栏的空白…

    2022年6月4日
    45
  • 最长回文子串(Longest Palindromic Substring)——三种时间复杂度的解法「建议收藏」

    最长回文子串(Longest Palindromic Substring)——三种时间复杂度的解法「建议收藏」  子串:小于等于原字符串长度由原字符串中任意个连续字符组成的子序列  回文:关于中间字符对称的文法,即“aba”(单核)、“cabbac”(双核)等  最长回文子串:1.寻找回文子串;2.该子串是回文子串中长度最长的。一、O(n^3)时间复杂度方法——暴力求解1.思想:    1)从最长的子串开始,遍历所有该原字符串的子串;    2)每找出一个字符串,就判断该字符串是否为回文;  …

    2022年4月28日
    61
  • TextBox为密码框赋值技巧

    TextBox为密码框赋值技巧当TextBox类型为密码框时,用普通的赋值方法(txtB1.Text=”abc”)是行不通的,TextBox是不会显示出内容的 应该采取:txtB1.Attributes.Add(“value”,”abc”),此时页面才会将“abc”以*号的形式显示出来。

    2022年7月24日
    5
  • tinyint 范围「建议收藏」

    tinyint 范围「建议收藏」最进做项目要记日志日志表同事建的关联任务id用的tinyint一开始测试没问题后来日志记录里数据全是127纳闷看了127的也没人使用然后才看到“`lang=sqlTINYINT型的字段如果不设置UNSIGNED类型,存储-128到127的整数。“`改了就好了抠鼻.jpg…

    2022年9月21日
    3
  • Python爬虫之女神网图片(三)

    Python爬虫之女神网图片(三)女神网是一个可以搜索女神的图片的网站。废话不说,直接来干货:环境配置:系统环境:WIN7/8/10编译环境:Python3+所需库:requests、re、os、pymongo、Beatifulsoup、timeIDE:Pycharmnvshen.py#!/usr/bin/python#-*-coding:utf-8-*-importrequestsfromrequestsi…

    2022年6月8日
    49
  • python做cae库_python常用模块-OS模块

    python做cae库_python常用模块-OS模块importos__file__:指当前文件,带有路径的D:/svn_auto3/test_case1/test1.py(注意这里的斜杠,和abspath的区别就是这里)#路径操作>>>os.chdir(‘D:\\’)#进入目录#目录切换操作>>>importos>>>os.curdir’.’>>>os.pardir’…

    2022年5月2日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号