c++中deque(双端动态数组)

64 篇文章 0 订阅

deque容器

  • 双端动态数组。
  • 与vector的差异:deque插入和删除为常数项时间,不会因为数据量的大小改变操作所耗时间。
  • deque没有容量的概念。它有分段连续空间组成,由中控器连接。当前空间不足时,另开辟一段空间,并和原来的拼接在一起,像链表。而vector会在新空间开辟后删除原来的旧空间。
    在这里插入图片描述

deque构造函数

deque<T> deqT;//默认构造形式
deque(beg,end); //构造函数将[beg,end)区间中的元素拷贝给本身deque(n,elem) ;//构造函数将n个elem拷贝给本身。
deque(const deque &deq);//拷贝构造函数。

deque赋值操作
assign(beg,end);//将[beg,end)区间中的数据拷贝赋值给木身。assign(n, elem);//将n个elem拷贝赋值给本身。
deque& operator=(const deque &deq);//重载等号操作符swap ( deq) ;// 将deq与本身的元素互换
  • 例子:
void printDequeInt (deque<int> &d)
{
	for (deque<int>::iterator it=d.begin() ;it!=d.end() ;it++)
	{
		cout<<*it<<" " ;
	}
	cout<<endl ;
}
void test01()
{
	deque<int> d(5,10) ;
	printDequeInt(d) ;
	//assign(n,elem) ;/ /将n个elem拷贝赋值给本身。
	deque<int>d1;
	d1.assign(5,100) ;
	printDequeInt(d1) ;
}

deque<int>d2 ;
d2 = d1;
printDequeInt(d2) ;//100 100 100 100 100
// swap(deq);//将deq与本身的元索互换
deque<int> d3(5,1) ;
deque<int> d4(5,2) ;
printDequeInt(d3) ;//1 1 1 1 1
printDequeInt(d4) ;//2 2 2 2 2
d3.swap(d4) ;
printDequeInt(d3) ;//2 2 2 2 2
printDequeInt(d4) ;//1 1 1 1 1
deque. size(); //返回容器中元素的个数
deque. empty() ;//判断容器是否为空
deque. resize(num) ;//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。
deque. resize(num,elem); //重新指定容器的长度为num,若容器变长,则以elem值填

deque双端插入和删除操作
push_back(elem) ;//在容器尾部添加一个数据
push_front(elem) ;//在容器头部插入一个 数据
pop_back();//删除容器最后--个数据:
pop_front();//删除容器第一个 数据
deque数据存取
at(idx) ;//返回索引idx所指的数据,如果idx越界,抛出out_ of_ range。
operator[] ;//返回索引idx所指的数据,如果idx越界,不抛出兄常,直接出错。
front();//返回第- -个数据。
back();//返回最后一一个 数据|
  • 例子:
//尾部插入
d.push_back(10) ;
d.push_back(20) ;
d.push_back(30) ;//10 20 30
//头部插入
d.push_front(40) ;
d.push_front(50) ;
d.push_front(60) ;
printDequeInt(d) ;//60 50 40 10 20 30
//头部删除
d.pop_front();//50 40 10 20 30
//尾部删除
d.pop_back() ;//50 40 10 20
printDequeInt(d) ;//50 40 10 20

if(d. empty())
{
	cout<<"d容器为空"<<endl ;
}
else 
{
	cout<<"d容器非空"<<end1 ;
	cout<<"size = "<<d.size()<<endl; //4
}
//[]访问第二个元素
cout<<"d[2] = "<<d[2]<<end1;/ /10
cout<<"d.at(2) = "<<d.at(2)<<end; / /10
cout<<"头元索= "<<d.front()<<endL; / /50
cout<<"尾元素= "<<d.back()<<endl; / /20
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值