C++:SLT容器-->deque

news2025/1/11 18:40:20

在这里插入图片描述

C++:SLT容器-->deque

        • 1. 构造函数
        • 2. deque 赋值操作
        • 3. deque 大小操作
        • 4. deque 插入和删除
        • 5. deque 容器数据存取
        • 6. deque 排序操作

双端数组,可以对头部和尾部进行插入删除操作
==需要导入头文件#include <deque>==

1. 构造函数

deque deqT; // 默认构造函数
deque(beg,end); // 构造函数将(beg,end)区间中的元素拷贝给本身
deque(n,ele); // 构造函数将n个ele拷贝给本身
deque(const deque &deq); // 拷贝构造函数

#include <iostream>
#include <deque>

using namespace std;



void printDeque(deque<int>& d){
    for(deque<int>::const_iterator it = d.begin();it!=d.end();it++){
        cout << *it << endl;
    }

}

void test(){
    deque<int> d1;
    for (int i = 0; i < 10; ++i) {
        d1.push_back(i+1);
        // 尾部插入
        d1.push_front(i+1);
        // 头部插入
    }
    printDeque(d1);


    deque<int> d2(10,100);
    printDeque(d2);

    
}

int main() {

    test();

    return 0;
}

2. deque 赋值操作

deque& operator=(const deque &deq); // 重载等号操作符
assign(beg,end); // 将(beg,end)区间中的数据拷贝赋值给本身
assign(n,elem); // 将n个elem拷贝赋值给本身

void test(){
    deque<int> d1;
    for (int i = 0; i < 10; ++i) {
        d1.push_front(i+1);
        // 头部插入
    }
    printDeque(d1);

    deque<int> d2 = d1;
    // 重载等号操作符
    printDeque(d2);

    deque<int> d3;
    d3.assign(d2.begin(),d2.end());
    // 将(beg,end)区间中的数据拷贝赋值给本身
    printDeque(d3);

    deque<int> d4;
    d4.assign(10,1);
    printDeque(d4);

}

在这里插入图片描述

3. deque 大小操作

deque.empty(); // 判断容器是否为空
deque.size(); // 返回容器中元素的个数
deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值0重新填充位置;若容器变短,则末尾超出容器长度的元素被删除
deque.resize(num,elem); // 重新指定容器的长度为num,若容器变长,则以elem值填充新位置;若容器变短,则以末尾超出容器长度的元素被删除

void test(){
    deque<int> d1;
    for (int i = 0; i < 10; ++i) {
        d1.push_front(i+1);
        // 头部插入
    }
    printDeque(d1);

    cout << d1.empty() << endl;
    
    cout << d1.size() << endl;
    

    d1.resize(5);
    printDeque(d1);

    d1.resize(10);
    printDeque(d1);

    d1.resize(12,100);
    printDeque(d1);

}

在这里插入图片描述

4. deque 插入和删除
  • 两端插入和删除操作
    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位置的数据,返回下一个数据的位置
void test(){
    deque<int> d1;
    d1.push_back(1);
    // 在尾部插入一个元素
    d1.push_front(2);
    // 在头部插入一个元素
    printDeque(d1);

    d1.pop_back();
    // 删除尾部第一个元素
    printDeque(d1);


    d1.push_front(1);
    deque<int>::const_iterator it = d1.begin();
    it++;
    d1.insert(it,3);
    // 插入操作
    printDeque(d1);
    d1.insert(it,2,10);
    printDeque(d1);


    deque<int> d2;
    for (int i = 5; i < 10; ++i) {
        d2.push_front(i);
    }
    d1.insert(it,d2.begin(),d2.end());
    printDeque(d1);

    d1.erase(it);
    printDeque(d1);


}

在这里插入图片描述

5. deque 容器数据存取

at(index); // 返回索引idx所指的数据
operator[]; // 返回索引idx所指的数据
front(); // 返回容器中第一个数据元素
back(); // 返回容器中最后一个数据元素

void test(){
    deque<int> d1;
    for (int i = 0; i < 5; ++i) {
        d1.push_back(i+1);
    }
    printDeque(d1);

    for (int i = 0; i < d1.size(); ++i) {
        cout << d1[i] << ends;
    }
    cout << endl;
    for (int i = 0; i < d1.size(); ++i) {
        cout << d1.at(i) << ends;
    }
    cout << endl;
    cout << "第一个元素" << d1.front()<< endl;
    cout << "最后一个元素" << d1.back()<< endl;
}

在这里插入图片描述

6. deque 排序操作

需要导入头文件#include <algorithm>

sort(iterator beg,iterator end); // 对beg和end区间内元素进行排序

void test(){
    deque<int> d1;
    d1.push_back(3);
    d1.push_back(100);
    d1.push_back(2);
    printDeque(d1);

    sort(d1.begin(),d1.end());
    // 默认升序
    printDeque(d1);
}

在这里插入图片描述

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

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

相关文章

6.13.1 使用残差神经网络堆叠集成进行乳腺肿块分类和诊断的综合框架

计算机辅助诊断 (CAD) 系统需要将肿瘤检测、分割和分类的自动化阶段按顺序集成到一个框架中&#xff0c;以协助放射科医生做出最终诊断决定。 介绍了使用堆叠的残差神经网络 (ResNet) 模型&#xff08;即 ResNet50V2、ResNet101V2 和 ResNet152V2&#xff09;进行乳腺肿块分类…

单向桥式整流电容滤波电路

假设&#xff1a;1.忽略整流电路内阻&#xff1b;2. 足够大。 一、空载情况 刚开始上升&#xff0c;通过D1、D3给后面供电&#xff0c;这种情况下电容就要被充电&#xff0c;根据前面的假设&#xff0c;设整流电路没有内阻&#xff0c;所以电容充电速度非常快&#xff0c;随着…

Java—集合简述

集合类继承结构图 Collection|---------------------| | | Set List Queue| | | SortedSet ArrayList Deque| LinkedList | NavigableSet Vector ArrayDeque| Stack | TreeSet …

外卖跑腿APP开发指南:探索同城O2O系统源码技术要点

同城O2O系统作为这类服务的技术支撑平台&#xff0c;承载了外卖跑腿APP的开发与运行。本篇文章&#xff0c;小编将深入探讨同城O2O系统源码的技术要点&#xff0c;为外卖跑腿APP的开发提供指导与参考。 一、同城O2O系统概述 同城O2O系统是一种基于地理位置的线上到线下服务平台…

centos7.9部署k8s的几种方式

文章目录 一、常见的k8s部署方式1、使用kubeadm工具部署2、基于二进制文件的部署方式3、云服务提供商的托管 Kubernetes 服务4、使用容器镜像部署或自动化部署工具 二、使用kubeadm工具部署1、硬件准备&#xff08;虚拟主机&#xff09;2、环境准备2.1、所有机器关闭防火墙2.2、…

【docker 不希望每次sudo docker cmd】

一、背景 ubuntu系统下安装好了docker 不希望每次sudo docker cmd&#xff0c;这样每次多输入很多字&#xff0c;比较麻烦 二、原理 在 Ubuntu 等 Linux 发行版上&#xff0c;使用 Docker 命令时常常需要使用 sudo 命令&#xff0c;这是因为 Docker 的服务是以 root 权限运行…

vite工程化搭建vue项目之自动按需导入

背景 当我们在使用vue3组合式开发的时候&#xff0c;大多数情况下我们的代码可能是这样的 <script setup lang"ts"> import { ref, reactive, toRefs, onMounted, computed } from vue; defineProps({}); </script><template><div></di…

【介绍下ERP,什么是ERP?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

C++回溯算法

迷宫的所有路径 #include<bits/stdc.h> using namespace std; void func(int,int,int); bool a[110][110]; int b[110]; int c[110]; int top1; int n; int main() {cin>>n;for(int i1;i<n;i)for(int j1;j<n;j)a[i][j]true;b[0]1;c[0]1;a[1][1]false;func(1,…

两条单链表相交求交点-链表题

面试题 02.07. 链表相交 - 力扣&#xff08;LeetCode&#xff09; A和B两个链表&#xff0c;A走完再走BD&#xff0c;B走完再走AD&#xff1b; 这样走的路程一样&#xff0c;动手画一下就发现D点他们会碰到 class Solution { public:ListNode *getIntersectionNode(ListNode …

「PS图像软件下载」Adobe Photoshop专业图像处理软件资源获取!

Photoshop&#xff0c;无论是对于初学者还是资深设计师&#xff0c;Photoshop都以其易上手且深度足够的特性&#xff0c;赢得了广泛的赞誉。 在修图方面&#xff0c;Photoshop的表现尤为出色。无论是调整色彩平衡、裁剪图片&#xff0c;还是去除瑕疵、增强细节&#xff0c;Phot…

02 Pytorch_NLP

1. N-gram n决定关联信息 2. TF____IDF TF&#xff1a;词频 IDF&#xff1a;逆向序列 假如&#xff1a;TF * IDF 就是当前的文件&#xff0c;那么乘积反而更大&#xff01; 因为它只出现在 特定的文章中&#xff01; TF-IDF 简介 TF-IDF&#xff08;Term Frequency-Inverse…

bugku---misc---赛博朋克

1、下载附件解压之后是一个txt文本&#xff0c;查看文本的时候看到头部有NG的字样 2、把txt改为png后缀得到一张图片 3、binwalk没发现奇怪的地方&#xff0c;分离出来还是图片 4、stegslove分析&#xff0c;切换图片没有发现奇怪地方 5、将通道rgb置为0。出现了flag但是flag不…

微信小程序-uniapp-切换tab时数据列表如何切换?

如图&#xff1a; 这里有两个tab&#xff0c;要保证每次切换后列表保持不变&#xff0c;就必须在运行时要有两个持久化的数据源&#xff0c;每个tab是一个列表&#xff0c;让我们来设计一下这样的数据结构。 首先我们的数据结构是这样的&#xff1a; 体现在vue的data是这样的&a…

opencv 通过滑动条调整阈值处理、边缘检测、轮廓检测、模糊、色调调整和对比度增强参数 并实时预览效果

使用PySimpleGUI库创建了一个图形用户界面(GUI),用于实时处理来自OpenCV摄像头的图像。它允许用户应用不同的图像处理效果,如阈值处理、边缘检测、轮廓检测、模糊、色调调整和对比度增强。用户可以通过滑动条调整相关参数。 完整代码在文章最后,可以运行已经测试; 代码的…

【C++取经之路】继承

目录 继承的概念及定义 单继承的格式 继承方式和访问限定符 继承后子类访问基类成员的权限 基类和派生类对象赋值转换 切片 继承中的作用域 引申&#xff1a;重载和隐藏的区别 派生类的默认成员函数 继承与友元 继承与静态成员 如何实现一个不能被继承的类 复杂的…

Ubuntu 24.04 屏蔽snap包

Ubuntu 24.04 屏蔽snap包 屏蔽 这里所说的屏蔽指的是&#xff1a;禁止sudo apt install firefox时安装snap版本的包。 如需卸载snap&#xff0c;请使用关键词搜索。 命令行 cat <<EOF | sudo tee /etc/apt/preferences.d/snap-apps-disable Package: chromium* firef…

SpringBoot启动流程、起步依赖、配置文件、运行方式与核心注解

讲一讲SpringBoot启动流程 springboot项目在启动的时候, 首先会执行启动引导类里面的SpringApplication.run(AdminApplication.class, args)方法 这个run方法主要做的事情可以分为三个部分 : 第一部分进行SpringApplication的初始化模块&#xff0c;配置一些基本的环境变量、…

鲁教版八年级数学下册-笔记

文章目录 第六章 特殊平行四边形1 菱形的性质与判定2 矩形的性质与判定3 正方形的性质与判定 第七章 二次根式1 二次根式2 二次根式的性质3 二次根式的加减二次根式的乘除 第八章 一元二次方程1 一元二次方程2 用配方法解一元二次方程3 用公式法解一元二次方程4 用因式分解法解…

RERCS系统开发实战案例-Part04 创建FPM Application的搜索组件UIBB及其Feeder Class创建分配

继FPM Application创建完成后&#xff0c;新增对应的UIBB。 1、通过事务码 FPM_WB 进入FPM Application的配置界面 1&#xff09;条件搜索组件UIBB&#xff08;用于页面添加字段作为搜索条件&#xff09;&#xff1b; 2&#xff09;编辑配置标识和标题&#xff1b; 3&#xff…