C++deque的概念及常使用的函数大全

目录

deque容器基本知识

deque容器的vector容器的区别

deque容器构造函数

deque容器赋值操作

获取deque容器大小

deque容器插入删除操作

对deque容器数据存储操作

对deque容器排序

deque容器基本知识

deque容器为双端数组 即两端都有开口的

deque容器的vector容器的区别

  1. 对于头部的插入删除操作,vector容器效率低于deque函数
  2. vector容器访问元素效率高于deque

deque容器构造函数

函数原型:

        1 deque<T>//默认构造函数
        ‌2 deque(begin,end);//迭代器  将[begin,end)内元素拷贝到新容器中
‌        3 deque( n , elem);//n个elem数据填入deque容器
‌        4 deque( const deque& deq);//拷贝构造函

#include <iostream>
using namespace std;
#include <deque>

int main()
{
	//一
	deque<int> v1;
	//二
	deque<int>v2(v1.begin(), v1.end());
	//三
	deque<int>v3(5, 100);
	//四
	deque<int>v4(v3);


	return 0;
}

deque容器赋值操作

函数原型:

        1 deque& operator = const vector& vec;// 等号运算符重载
        ‌2 assign(begin,end);//迭代器
        ‌3 assign(int n , elem);//同上

#include <iostream>
using namespace std;
#include <deque>

int main()
{
	//给v1 v2赋初值
	deque<int>v1;
	for (int i = 0; i < 4; i++)
	{
		v1.push_back(i);
	}

	deque<int>v2;
	for (int i = 0; i < 4; i++)
	{
		v2.push_back(i + 4);
	}


	//一
	v1 = v2;
	//二
	v1.assign(v2.begin(), v2.end());
	//三
	v1.assign(5, 100);

	return 0;
}

获取deque容器大小

函数原型:

        1 bool empty(); //空返回true   否则返回false

        2 int size();            //返回元素数量

        3 resize(int num); //预留空间 

                                预留空间大于原来容器空间大小则扩充空间,且自动填充0

                                否则删除后面的元素

        4 resize(int num , elem);//同上    elem为填充值

#include <iostream>
using namespace std;
#include <deque>

int main()
{
	//给v1 v2赋初值
	deque<int>v1;
	for (int i = 0; i < 4; i++)
	{
		v1.push_back(i);
	}
	//一
	cout << v1.empty() << endl;//结果为false(0)
	//二
	cout << v1.size() << endl;//结果为4
	//三
	v1.resize(8);
	//四
	v1.resize(9, 10);//预留大小为9 若多出位置则填充9
					 //自定义类型也这样写 对象属性都填充为9



	return 0;
}

deque容器插入删除操作

函数原型:

两端的操作

1 void push_front(T n);//从头插入
2‌ void push_back(T n);//从尾插入

3 void pop_front();       //从头删除
4‌ void pop_back();       //从尾删除

对其他位置操作
5‌ insert(const iterator pos , elem);  //将elem插入到pos位置
‌6 insert(const iterator pos , int count , elem);  //将count个elem插入到pos位置
‌7 insert(const iterator begin,const iterator begin1 , const iterator end1); 

        //在begin处插入另一个容器内[begin1,end1)的元素

8 erase(const iterator pos);  //删除指定位置元素
‌9 erase(const iterator start , const iterator end);  //删除指定位置范围内的元素[start,end)

‌10 clear();  //清空容器所有元素

#include <iostream>
using namespace std;
#include <deque>

int main()
{
	//给v1 v2赋初值
	deque<int>v1;
	//一
	v1.push_front(10);
	//二
	v1.push_back(10);
	//三
	v1.pop_front();
	//四
	v1.pop_back();
	//五
	v1.insert(v1.begin() + 1 , 100);
	//六
	v1.insert(v1.begin(), 5, 10);//在begin处插入5个10
	//七
	deque<int>v2;
	v2.push_back(10);
	v2.push_back(10);
	v2.push_back(10);

	v1.insert(v1.begin(), v2.begin(), v2.end()); 
	//八
	v1.erase(v1.begin());
	//九
	v1.erase(v1.begin() + 1, v1.end());//删除v1的[begin()+1,v1.end())范围元素
	//十
	v1.clear();
	return 0;
}

对deque容器数据存储操作

函数原型:

1 at(int Index);
‌2 operator[];
3‌ front();         返回容器的第一个元素
‌4 back();         返回容器中最后一个元素
 

#include <iostream>
using namespace std;
#include <deque>

int main()
{
	//给v1 v2赋初值
	deque<int>v1;
	for (int i = 0; i < 4; i++)
	{
		v1.push_back(i);//给v1赋值
	}
	//一
	cout << v1.at(0) << endl;//0
	//二
	cout << v1[1] << endl;   //1
	//三
	cout << v1.front() << endl;//0
	//四
	cout << v1.back() << endl;//3

	return 0;
}

对deque容器排序

sort(const iterator begin, const iterator end);//默认为升序

 

#include <iostream>
using namespace std;
#include <deque>
#include <algorithm>

int main()
{
	//给v1 v2赋初值
	deque<int>v1;
	v1.push_back(9);
	v1.push_back(7);
	v1.push_back(11);
	v1.push_back(5);

	sort(v1.begin(), v1.end());
	
	return 0;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zmzzz666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值