栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

STL——deque容器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

STL——deque容器

功能:双端数组,可以对头端进行插入删除操作

deque与vector区别:

1.vector对于头部的插入删除效率低,数据量越大,效率越低

2.deque相对而言,对头部的插入删除速度比vector快

3.vector访问元素时的速度比deque快,这是因为两者的内部实现不同

deque内部工作原理:

内部有中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据

中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间

deque容器的迭代器也是支持随机访问

deque容器的构造函数

#include 
#include
#include
using namespace std;

void printdeque(deque&d1)
{
	for (deque::iterator it = d1.begin(); it != d1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

//在上述函数中it是可以通过诸如*it=100进行修改的
// 如果想要其无法修改,除了在参数中对容器进行const常量化操作,还要修改迭代器名称为const_iterator
//void printdeque(const deque& d1)
//{
//	for (deque::const_iterator it = d1.begin(); it != d1.end(); it++)
//	{
//		cout << *it << " ";
//	}
//	cout << endl;
//}

//deque容器的构造函数
void test1()
{
	dequed1;
	for (int i = 0; i < 10; i++)
	{
		d1.push_back(i);
	}
	printdeque(d1);

	dequed2(d1.begin(), d1.end());

	dequed3(10, 100);

	dequed4(d3);
}

deque赋值操作

#include 
#include
#include
using namespace std;

void printdeque(const deque&d1)
{
	for (deque::const_iterator it = d1.begin(); it != d1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}



//deque容器的赋值操作
void test1()
{
	dequed1;
	for (int i = 0; i < 10; i++)
	{
		d1.push_back(i);
	}

	dequed2;
	d2 = d1;

	dequed3;
	d3.assign(d1.begin(), d1.end());

	dequed4;
	d4.assign(10, 100);
}

deque的大小操作

#include 
#include
#include
using namespace std;

void printdeque(const deque&d1)
{
	for (deque::const_iterator it = d1.begin(); it != d1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}



//deque容器的大小操作
void test1()
{
	dequed1;
	for (int i = 0; i < 10; i++)
	{
		d1.push_back(i);
	}


	if (d1.empty())
	{
		cout << "为空" << endl;
	}
	else
	{
		cout << "不为空" << endl;
	}
	//deque没有容量概念
	d1.resize(15);
	//比原来长时用0填充,且可以修改默认值
	d1.resize(15, 2);
	//比原来短时会把后面的数值删除
	d1.resize(5);
}

deque容器的插入和删除

#include 
#include
#include
using namespace std;

void printdeque(const deque&d1)
{
	for (deque::const_iterator it = d1.begin(); it != d1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}



//deque容器的大小操作
void test1()
{
	dequed1;
	//尾插
	d1.push_back(10);
	d1.push_back(20);
	//头插
	d1.push_front(60);
	d1.push_front(50);
	//头删
	d1.pop_front();
	//尾删
	d1.pop_back();

	//指定某一位置插入,insert,需要提供迭代器
	d1.insert(d1.begin(), 1000);
	d1.insert(d1.begin(), 2,100);//在该位置插入两个100

	//按区间进行插入
	dequed2;
	d2.push_back(2);
	d2.push_back(2);
	d2.push_back(2);
	d1.insert(d1.begin(), d2.begin(), d2.end());//在d1的begin位置插入d2的某一区间的数字

	//删除
	d1.erase(d1.begin() + 1);
	//按区间删除
	d1.erase(d1.begin(), d1.end());
}

deque数据存取

#include 
#include
#include
using namespace std;

void printdeque(const deque&d1)
{
	for (deque::const_iterator it = d1.begin(); it != d1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}



//deque容器的大小操作
void test1()
{
	dequed;
	d.push_back(10);
	d.push_back(20);
	d.push_back(30);
	d.push_back(40);
	d.push_back(50);
	d.push_back(60);

	//通过[]方式访问
	for (int i = 0; i < d.size(); i++)
	{
		cout << d[i] << " ";
	}
	cout << endl;
	for (int i = 0; i < d.size(); i++)
	{
		cout << d.at(i) << " ";
	}
	cout << endl;

	cout << d.front() << endl;
	cout << d.back() << endl;
}

deque容器的排序操作

#include 
#include
#include
using namespace std;

void printdeque(const deque&d1)
{
	for (deque::const_iterator it = d1.begin(); it != d1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}



//deque容器的排序
void test1()
{
	dequed;
	d.push_back(10);
	d.push_back(2);
	d.push_back(30);
	d.push_back(4);
	d.push_back(50);
	d.push_back(6);

	sort(d.begin(), d.end());//sort默认排序为从小到大升序
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号