deque容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: deque容器

导航


1.deque 基础点,构造函数

2.deque 的赋值

3.deque 的大小

4.deque 的插入与删除

5.deque 的数据存取

6.deque 算法排序

———————————————————————————————————


1.deque 基础点,构造函数


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

迭代器支持随机访问


deque与vector的区别:


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

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

vector访问元素时速度比deque快,这和两者内部实现相关


比vector容器多push_front()和pop_front()

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


构造函数与vector容器大致相同

例子:


#include <iostream>
using namespace std;
#include <deque>
void PrintDeque(const deque<int>& d)  //改为只读状态加const
{
  //迭代器也要改为只读,此时引用的d的内存位置及对应的数据无法更改
  for(deque<int>::const_iterator it = d.begin();it!=d.end();it++)
  {
  //*it= 20;  错误的此时无法更改位置
  cout<<(*it)<<" ";
  }
  cout<<endl;
}
void test01()
{
  deque<int> d;
  //1.普通赋值
  for(int i=0;i<10;i++)
  {
  d.push_back(i);
  }
  PrintDeque(d);
  //2.区间构造
  deque<int> d1(d.begin(),d.end());
  PrintDeque(d1);
  //3.n个elem 构造
  deque<int> d2(5,100);
  PrintDeque(d2);
  //4.拷贝构造
  deque<int> d3(d2);
  PrintDeque(d3);
}
int main()
{
  test01();
  system("pause");
  return 0;
}



运行结果:



———————————————————————————————————


2.deque的赋值


和vector容器一致

例子:


#include <iostream>
using namespace std;
#include <deque>
void PrintDeque(const deque<int>& d)  //改为只读状态加const
{
  //迭代器也要改为只读
  for(deque<int>::const_iterator it = d.begin();it!=d.end();it++)
  {
  //*it= 20;  错误的此时无法更改位置
  cout<<(*it)<<" ";
  }
  cout<<endl;
}
void test01()
{
  deque<int> d;
  //1.普通赋值
  for(int i=0;i<10;i++)
  {
  d.push_back(i);
  }
  PrintDeque(d);
  //2.operator=
  deque<int> d1;
  d1 = d;
  PrintDeque(d1);
  //3.assign 区间赋值
  deque<int> d2;
  d2.assign(d1.begin(),d1.end());
  PrintDeque(d2);
  //4.assign n个elem
  deque<int> d3;
  d3.assign(5,100);
  PrintDeque(d3);
}
int main()
{
  test01();
  system("pause");
  return 0;
}



运行结果:



———————————————————————————————————


3.deque 容量大小


大致与vector相同,就是没有容量的概念


例子:


#include <iostream>
using namespace std;
#include <deque>
void PrintDeque(const deque<int>& d)  //改为只读状态加const
{
  //迭代器也要改为只读,此时引用的d的内存位置及对应的数据无法更改
  for(deque<int>::const_iterator it = d.begin();it!=d.end();it++)
  {
  //*it= 20;  错误的此时无法更改位置
  cout<<(*it)<<" ";
  }
  cout<<endl;
}
void test01()
{
  deque<int> d;
  for(int i=0;i<10;i++)
  {
  d.push_back(i);
  }
  PrintDeque(d);
  if(d.empty())
  {
  cout<<"容器为空"<<endl;
  }
  else
  {
  cout<<"容器不为空"<<endl;
  cout<<"大小为:"<<d.size()<<endl;//无容量概念
  }
  d.resize(15,100); //多出来部分用1000代替
  PrintDeque(d);
  d.resize(5);//删除对应缺少的位置
  PrintDeque(d);
}
int main()
{
  test01();
  system("pause");
  return 0;
}


运行结果:



———————————————————————————————————


4.deque 的插入与删除


大致也与vector相同

多出来 v.push_front(), v.pop_front(), v.insert(v.begin(),v1.begin().v1.end()

)


例子:


#include <iostream>
using namespace std;
#include <deque>
void PrintDeque(const deque<int>& d)  //改为只读状态加const
{
  //迭代器也要改为只读,此时引用的d的内存位置及对应的数据无法更改
  for(deque<int>::const_iterator it = d.begin();it!=d.end();it++)
  {
  //*it= 20;  错误的此时无法更改位置
  cout<<(*it)<<" ";
  }
  cout<<endl;
}
void test01()
{
  deque<int> d;
  d.push_back(20);  //最后加20
  d.push_front(100);//第一个位置加100
  d.pop_front();  //删除第一个位置数
  PrintDeque(d);
  deque<int> d1;
  d1.insert(d1.begin(),d.begin(),d.end()); //在d1的第一个位置插入d容器中所有数
  PrintDeque(d1);
}
int main()
{
  test01();
  system("pause");
  return 0;
}


运行结果:



———————————————————————————————————


5.deque 的数据存取


大致与vector相同


———————————————————————————————————


6.deque 算法排序


包含头文件#include < algorithm >

sort(v.begin(),v.end()) //进行升序排序

支持随机访问的迭代器的容器,都可以用sort排序


例子:


#include <iostream>
using namespace std;
#include <algorithm>  //算法头文件
#include <deque>
void PrintDeque(const deque<int>& d)  //改为只读状态加const
{
  //迭代器也要改为只读,此时引用的d的内存位置及对应的数据无法更改
  for(deque<int>::const_iterator it = d.begin();it!=d.end();it++)
  {
  //*it= 20;  错误的此时无法更改位置
  cout<<(*it)<<" ";
  }
  cout<<endl;
}
void test01()
{
  deque<int> d;
  d.push_back(100);
  d.push_back(10);
  d.push_back(20);
  d.push_front(50);
  d.push_front(60);
  d.push_front(70);  //进行填入无序的数据
  cout<<"原先的数据:"<<endl;
  PrintDeque(d);
  sort(d.begin(),d.end()); //进行升序排序
  cout<<"排序过后:"<<endl;
  PrintDeque(d);
}
int main()
{
  test01();
  system("pause");
  return 0;
}


运行结果:


相关文章
|
2月前
|
算法 数据处理 C++
|
3月前
|
C++ 容器
C++之评委打分案例(vector与deque容器练习)
C++之评委打分案例(vector与deque容器练习)
|
3月前
|
C++ 容器
C++之deque容器(构造、赋值、大小、插入与删除、存取、排序)
C++之deque容器(构造、赋值、大小、插入与删除、存取、排序)
|
3月前
|
存储 算法 C++
C++一分钟之-容器概览:vector, list, deque
【6月更文挑战第21天】STL中的`vector`是动态数组,适合随机访问,但插入删除非末尾元素较慢;`list`是双向链表,插入删除快但随机访问效率低;`deque`结合两者优点,支持快速双端操作。选择容器要考虑操作频率、内存占用和性能需求。注意预分配容量以减少`vector`的内存重分配,使用迭代器而非索引操作`list`,并利用`deque`的两端优势。理解容器内部机制和应用场景是优化C++程序的关键。
50 5
|
2月前
|
设计模式 存储 缓存
【C++】详解STL容器之一的deque和适配器stack,queue
【C++】详解STL容器之一的deque和适配器stack,queue
|
4月前
|
C++ 容器
黑马c++ STL部分 笔记(3) deque容器
黑马c++ STL部分 笔记(3) deque容器
|
4月前
|
存储 C语言 C++
C++中STL常用容器(vector、deque、list、map、set)一文带你了解
C++中STL常用容器(vector、deque、list、map、set)一文带你了解
|
4月前
|
C++ 索引 容器
deque容器-赋值操作讲解
deque容器-赋值操作讲解
35 0
|
4月前
|
存储 前端开发 C++
deque容器-大小搡作的讲解
deque容器-大小搡作的讲解
26 0
|
4月前
|
索引 Python 容器
Python容器专题 - deque(队列)--双向队列对象
Python容器专题 - deque(队列)--双向队列对象
48 0