STL-deque

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

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

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

  3. vector访问元素时的速度会比deque快,这和两者内部实现有关

  4. deque构造函数

  5. 赋值

  6. 大小

  7. 插入和删除

  8. 数据存取

  9. 排序

#include<iostream>
#include<vector>
#include<string>
#include<deque>
#include <algorithm>
using namespace std;//只读迭代器const_iterator
void printdeque(const deque<int> &d)
{for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++){//*it = 100; 不可以修改cout << *it << " ";}cout << endl;
}//deque构造函数
void test01()
{//deque<T> deqT; //默认构造形式//deque(beg, end); //构造函数将[beg, end)区间中的元素拷贝给本身。//deque(n, elem); //构造函数将n个elem拷贝给本身。//deque(const deque & deq); //拷贝构造函数deque<int>d1;d1.push_back(1);d1.push_back(1);d1.push_back(1);d1.push_back(1);printdeque(d1);deque<int> d2(d1.begin(), d1.end());printdeque(d2);deque<int>d3(10, 100);printdeque(d3);deque<int>d4 = d3;printdeque(d4);}//赋值
void test02()
{deque<int> d1;for (int i = 0; i < 10; i++){d1.push_back(i);}printdeque(d1);deque<int>d2;d2 = d1;printdeque(d2);deque<int>d3;d3.assign(d1.begin(), d1.end());printdeque(d3);deque<int> d4;d4.assign(10, 100);printdeque(d4);
}//deque大小,与vector不一样,deque没有容量
void test03()
{deque<int> d1;for (int i = 0; i < 10; i++){d1.push_back(i);}printdeque(d1);//判断容器是否为空if (d1.empty()){cout << "d1为空" << endl;}else{cout << "d1不为空" << endl;//统计大小cout << "d1的大小为: " << d1.size() << endl;}//从新指定大小d1.resize(15, 1);printdeque(d1);d1.resize(5);printdeque(d1);
}//插入和删除
void test04()
{//push_back(elem); //在容器尾部添加一个数据//push_front(elem); //在容器头部插入一个数据//pop_back(); //删除容器最后一个数据//pop_front(); //删除容器第一个数据//insert(pos, elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。//insert(pos, n, elem); //在pos位置插入n个elem数据,无返回值。//insert(pos, beg, end); //在pos位置插入[beg,end)区间的数据,无返回值。//clear(); //清空容器的所有数据//erase(beg, end); //删除[beg,end)区间的数据,返回下一个数据的位置。//erase(pos); //删除pos位置的数据,返回下一个数据的位置deque<int> d1;//尾插d1.push_back(10);d1.push_back(20);//头插d1.push_front(100);d1.push_front(200);printdeque(d1);//尾删d1.pop_back();//头删d1.pop_front();printdeque(d1);//插入d1.insert(d1.begin(), 100);printdeque(d1);d1.insert(d1.begin(),2, 1000);printdeque(d1);d1.insert(d1.begin(),d1.begin(), d1.end());printdeque(d1);}//数据存取
void test05()
{deque<int>d1;d1.push_back(10);d1.push_back(10);d1.push_back(10);d1.push_back(10);for (int i = 0; i < d1.size(); i++){cout << d1[i] << " ";}cout << endl;for (int i = 0; i < d1.size(); i++){cout << d1.at(i) << " ";}//头尾cout<<"头"<<d1.front();cout << "尾" << d1.back();}//deque排序
void test06()
{//sort(iterator beg, iterator end) //对beg和end区间内元素进行排序deque<int> d;d.push_back(10);d.push_back(101);d.push_back(10);d.push_back(8);printdeque(d);sort(d.begin()+1, d.end()-1);printdeque(d);}
int main()
{test01();test02();test03();test04();test05();test06();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03 OSPF

参考文章 1 初步认识OSPF的大致内容(第三课)-CSDN博客 2

微服务环境搭建:docker+nacos单机

nacos需要连接mysql&#xff0c;持久化相关配置。 1. 部署好mysql后&#xff0c;新建nacos数据库然后初始化nacos脚本 -- -------------------------------------------------------- -- 主机: 192.168.150.101 -- 服务器版本: …

c#调用matlab生成的COM DLL,Matlab GUI程序封装成exe文件并在不安装Matlab的电脑上运行

最近根据需求用Matlab写了一个简单的软件&#xff0c;但需要安装到其他电脑上运行&#xff0c;倒腾了很久最终成功在其他电脑上运行&#xff0c;现将方法共享给大家。安装方法&#xff1a;①程序封装 首先用Matlab写完程序并封装好&#xff08;我用的是Matlab2018b&#xff0c;…

【Linux系统编程】环境变量详解

文章目录 1. 环境变量的基本概念2. 如何理解呢&#xff1f;&#xff08;测试PATH&#xff09;2.1 切入点1查看具体的环境变量原因剖析常见环境变量 2.2 切入点2给PATH环境变量添加新路径将我们自己的命令拷贝到PATH已有路径里面 2.3 切入点3 3. 显示所有环境变量4. 测试HOME5. …

Django ORM 中的单表查询 API(1)

在 Django 中&#xff0c;对象关系映射&#xff08;ORM&#xff09;提供了一种功能强大、表现力丰富的数据库交互方式。ORM 允许开发人员使用高级 Python 代码执行数据库查询&#xff0c;从而更轻松地处理数据库实体。 下面&#xff0c;我们将探讨 Django ORM 中单表查询 API …

JNPF低代码开发平台总体架构介绍

目录 一、JNPF介绍 二、团队能力 三、技术选型 1.后端技术栈 2.前端技术栈 3.数据库支持 四、JNPF界面示意图 五、开发环境 一、JNPF介绍 JNPF是一款企业级低代码开发平台。基于Springboot、Vue技术&#xff0c;采用微服务、前后端分离架构&#xff0c;基于可视化数据建…

【论文解读】用于代码处理的语言模型综述

目录 1.简要介绍 2.代码处理的语言模型的评估 3.通用语言模型 4.用于代码处理的特定语言模型 5.语言模型的代码特性 6.软件开发中的LLM 7.结论与挑战 ​​​​​​​1.简要介绍 在这项工作中&#xff0c;论文系统地回顾了在代码处理方面的最新进展&#xff0c;包括50个模…

Ubuntu下安装Gazebo仿真器

Ubuntu下安装Gazebo仿真器 Gazebo仿真平台通常需要配合ROS使用&#xff0c;因此需要先安装ROS。可以参考ROS安装教程 首先安装一些必要的工具 sudo apt-get update sudo apt-get install lsb-release wget gnupg修改源 sudo wget https://packages.osrfoundation.org/gazebo…

cpp_12_异常处理

1 异常理论 1.1 何为异常&#xff1f; 在实际运行环境中发生&#xff0c;却在设计、编码、测试阶段无法预料的&#xff0c;各种潜在的问题。 1.2 报告异常的2种机制 1&#xff09;通过 return 返回值报告异常信息&#xff1a; 所有局部对象都能正确地被析构、被释放 定位错…

中仕教育:公务员政审需要哪些材料?

公务员政审则是公务员招聘过程中的重要环节&#xff0c;政审需要哪些材料呢? 一、个人基本信息 1. 身份证、户口本原件及复印件; 2. 学历学位证书原件及复印件; 3. 近期免冠一寸彩色照片2张; 4. 无犯罪记录证明材料; 5. 个人自传 6. 提供本人的现实表现证明材料(应届生…

Unity 面试篇|(七)Unity渲染与Shader篇 【全面总结 | 持续更新】

目录 1.问一个Terrain&#xff0c;分别贴3张&#xff0c;4张&#xff0c;5张地表贴图&#xff0c;渲染速度有什么区别&#xff1f;为什么&#xff1f;2.什么是LightMap&#xff1f;3.MipMap是什么&#xff0c;作用&#xff1f;4.请问alpha test在何时使用&#xff1f;能达到什么…

【数据结构初阶】——顺序表

本文由睡觉待开机原创&#xff0c;转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 这里写目录标题 1.数据结构2.顺序表线性表顺序表的结构 3.动态顺序表的实现 1.数据结构 数据结构的概念&…

UKP3d的管道编辑

山西这家用户在使用UKP3d时&#xff0c;提出以下问题&#xff1a; 1、stp导入的模型怎么测量距离&#xff1b;另外需要把某一个点移动至原点坐标&#xff0c;这个怎么操作呢&#xff1f; 回复&#xff1a;dist&#xff08;主要是捕捉点&#xff0c;推荐使用&#xff08;开启精…

Java面试汇总——jvm篇

目录 JVM的组成&#xff1a; 1、JVM 概述(⭐⭐⭐⭐) 1.1 JVM是什么&#xff1f; 1.2 JVM由哪些部分组成&#xff0c;运行流程是什么&#xff1f; 2、什么是程序计数器&#xff1f;(⭐⭐⭐⭐) 3、介绍一下Java的堆(⭐⭐⭐⭐) 4、虚拟机栈(⭐⭐⭐⭐) 4.1 什么是虚拟机栈&…

Spark面试题

1. spark core 1.简述hadoop 和 spark的不同点&#xff08;为什么spark更快&#xff09;♥♥♥ shuffle都是需要落盘的&#xff0c;因为在宽依赖中需要将上一个阶段的所有分区数据都准备好&#xff0c;才能进入下一个阶段&#xff0c;那么如果一直将数据放在内存中&#xff0c…

【iOS】UICollectionView的基本使用

使用UITableView作为表格来展示数据完全没有问题&#xff0c;但仍有许多局限性&#xff0c;对于一些更加复杂的布局样式&#xff0c;就有些力不从心了 比如&#xff0c;UITableView只允许表格每一行只能显示一个cell&#xff0c;而不能在一行中显示多个cell&#xff0c;对于这…

数据结构_C++语言描述_高教出版社

contents 前言一、绪论1.1 数据分析结构存储算法计算1.1.1 逻辑结构1.1.2 存储结构1.1.3 算法实现 1.2 数据类型1.3 算法方法 二、线性表2.1 线性表的逻辑结构2.2 线性表的存储结构2.2.1 顺序存储结构2.2.2 链式存储结构 2.3 线性表的操作算法2.3.1 顺序表的操作算法2.3.2 链表…

华为系统底层是用Java写的吗?和安卓的区别?

HarmonyOS&#xff08;鸿蒙操作系统&#xff09;是华为自主开发的分布式操作系统。下面是对HarmonyOS底层的详细介绍&#xff1a; 微内核架构&#xff1a;HarmonyOS采用了微内核架构&#xff0c;将核心服务和功能放在微内核中&#xff0c;而将其他应用服务放在用户空间中。这种…

【c++函数重载】

文章目录 一. 命名空间二 .全缺省参数和半缺省参数三 . 函数重载 一. 命名空间 1.不指定域&#xff1a;先在局部找&#xff0c;再全局。 2. 指定域&#xff1a;到指定的命名空间去找。 3. 当把指定命名空间放开时&#xff0c;即using namespace std&#xff1b;例如放开标准c库…

5.2 基于深度学习和先验状态的实时指纹室内定位

文献来源 Nabati M, Ghorashi S A. A real-time fingerprint-based indoor positioning using deep learning and preceding states[J]. Expert Systems with Applications, 2023, 213: 118889.&#xff08;5.2_基于指纹的实时室内定位&#xff0c;使用深度学习和前一状态&…