容器:deque

news2025/1/17 21:55:42

以下是对于deque容器知识的整理
1、构造
2、赋值
3、大小操作
4、插入
5、删除
6、数据存取
7、排序

#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
/*
deque容器:双端数组,可以对头端进行插入删除操作
deque与vector的区别:
    deque对于头部的插入和删除效率更高
    vector访问元素的速度更快
*/

/*
void printDeque(const deque<int> deq) // 传入只读deque,避免被修改
{
    for(deque<int>::const_iterator it = ...) // 迭代器要用const_iterator
    {
        cout <<  ...
    }
}
*/
void printDeque(deque<int> deq)
{
    for(deque<int>::iterator it = deq.begin(); it!=deq.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}


// deque构造
void test01()
{
    deque<int> deq1;
    deq1.push_back(1);
    deq1.push_back(2);
    deq1.push_back(3);
    printDeque(deq1);

    deque<int> deq2(deq1);
    printDeque(deq2);
}

// deque赋值
void test02()
{
    deque<int> deq1,deq2;
    deq1.push_back(1);
    deq1.push_back(2);
    deq1.push_back(3);
    deq2 = deq1;
    printDeque(deq2);
}

// deque大小操作
void test03()
{
    deque<int> deq1;
    cout << deq1.empty() << endl;
    deq1.push_back(1);
    deq1.push_back(2);
    deq1.push_back(3);
    cout << deq1.empty() << endl;

    cout << deq1.size() << endl;

    // resize(size, num) 重新定义容器的大小,多余的位置用num来填充

}

// deque插入
void test04()
{
    deque<int> deq;
    // 尾插和尾删
    deq.push_back(1);
    deq.push_back(2);
    deq.pop_back();

    deq.push_front(3);
    deq.push_front(4);
    deq.pop_front();

    printDeque(deq);

    // clear()
    deq.clear();
    for(int i=0; i<4; i++)
    {
        deq.push_back(i);
    }
    printDeque(deq);

    // insert(const_iterator pos, ele)
    deq.insert(deq.begin()+1,5);
    printDeque(deq);
    deq.insert(deq.begin()+2,2,5); // 在该位置插入2个5
    printDeque(deq);

    deque<int> deq2;
    deq2.push_back(10);
    deq2.push_back(20);
    deq2.push_back(30);
    deq2.push_back(40);
    deq2.push_back(50);
    deq2.push_back(60);
    // 将deq2的某个区间内的数字,插入到deq的某个位置处
    deq.insert(deq.begin()+2, deq2.begin()+1, deq2.end()-1);
    printDeque(deq);

    

}

// 5 删除函数erase()
void test05()
{
    deque<int> deq;
    deq.clear();
    for(int i=0; i<10; i++)
    {
        deq.push_back(i);
    }

    // 1 erase(beg,end); 删除[beg,end)区间内的数据,返回下一个数据的位置
    deq.erase(deq.begin()+3,deq.begin()+5);
    printDeque(deq);

    // 2 erase(pos); 删除pos位置的数据,返回下一个数据的位置
    deq.erase(deq.end())
    ;printDeque(deq);
}

// 数据存取
void test06()
{
    deque<int> deq;
    deq.clear();
    for(int i=0; i<10; i++)
    {
        deq.push_back(i);
    }

    // deq.at(ind);
    cout << "deq.at(1) = " << deq.at(1) << endl;
    // deq[ind];
    cout << "deq[2] = " << deq[2] << endl;
    // deq.front(); 返回第一个元素
    cout << "deq.front() = " << deq.front() << endl;
    // deq.back(); 返回最后一个元素
    cout << "deq.back() = " << deq.back() << endl;
}

void test07()
{
    deque<int> deq;
    deq.push_back(30);
    deq.push_back(20);
    deq.push_back(10);
    sort(deq.begin(), deq.end());
    cout << "排序后:";
    printDeque(deq);
}

int main(int argc, char **argv)
{
    // 1 构造
    cout << "1 构造" << endl;
    test01();
    cout << endl;

    // 2 赋值
    cout << "2 赋值" << endl;
    test02();
    cout << endl;

    // 3 大小操作
    cout << "3 大小操作" << endl;
    test03();
    cout << endl;

    // 4 插入
    cout << "4 插入" << endl;
    test04();
    cout << endl;

    // 5 删除
    cout << "5 删除" << endl;
    test05();
    cout << endl;

    // 6 数据存取
    cout << "6 数据存取" << endl;
    test06();
    cout << endl;
    
    // 7 排序
    cout << "7 排序" << endl;
    test07();
    cout << endl;

    return 0;
}

在这里插入图片描述

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

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

相关文章

2024年06月CCF-GESP编程能力等级认证Scratch图形化编程四级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共 10 题,每题 2 分,共 30 分) 第1题 小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级,那他可以选择的认证语言有几…

树状数组——点修区查与区修点查

树状数组是一种代码量小&#xff0c;维护区间的数据结构 他可以实现&#xff1a; 1.区间修改&#xff0c;单点查询 2.单点修改&#xff0c;区间查询 当然&#xff0c;二者不可兼得&#xff0c;大人全都要的话&#xff0c;请选择线段树 前置知识&#xff1a; lowbit(x)操作…

zerotier-one自建根服务器方法四

一、简介 前面几篇文章已经写完了安装配置服务器&#xff0c;今天写一下客户端如何连接自建的服务器。 二、准备工作 准备一个有公网IP的云主机。 要稳定性、安全性、不差钱的可以使用阿里、腾讯等大厂的云服务器。 本人穷屌丝一枚&#xff0c;所以我用的是免费的“三丰云…

常见sql语句练习

Tips&#xff1a;之前查看网上的文章感觉太乱了&#xff0c;所以自己整理了一套sql语句来练习&#xff0c;主要也可以拿来应对面试&#xff0c;需要的可以自行下载练习 包含基本语句、聚合函数、模糊查询、范围查询、排序、聚合、分组、分页、子查询、索引和视图、左右连接、双…

商城积分系统的代码实现(下)-- 积分订单的退款与结算

一、接着上文 用户在消耗积分的时候&#xff0c;需要根据一定的逻辑&#xff0c;除了扣减账户的当前余额&#xff0c;还需要依次消费积分订单的余额。 private void updatePointsOrderByUse(Integer schoolId, Long userId, String pointsType, int usingPoints) {List<Po…

数字证书与PKI解析

目录 1. 什么是数字证书 2. 为什么需要数字证书 3. 数字证书的格式 4. 什么是PKI 5. PKI的组成要素组件 5.1 用户 5.2 认证机构&#xff08;CA&#xff09; 5.3 仓库 5.4 PKI的体系结构 5.4.1 层次结构模型 5.4.2 交叉证明模型 5.4.3 混合模型 1. 什么是数字证书 要…

Django任意URL跳转漏洞(CVE-2018-14574)

目录 Django介绍 URL跳转漏洞介绍 Django任意URL跳转漏洞介绍 环境搭建 防御方法 前段时间在面试时&#xff0c;问到了URL跳转漏洞&#xff0c;我没有回答好&#xff0c;下午把URL跳转漏洞学习了&#xff0c;发现也不难&#xff0c;看来还需要学习的东西很多呀&#xff0c…

burp靶场xss漏洞(中级篇)下

靶场地址 All labs | Web Security Academy 第九关&#xff1a;反射型&#xff08; 转义&#xff09; 1.在搜索框随机输入字符并用Burp抓包 2.测试不同字符在JavaScript字符串中的反映&#xff0c;发现查询结果被包裹在script标签中 而单引号会被转义为 \ 3.构造payload跳出j…

Qt开发报错:Q_INTERFACES Error: Undefined interface

1、背景 VS2019qt5.12.10 从svn拉下来的项目&#xff0c;结果报错&#xff1a; Q_INTERFACES Error: Undefined interface 之前在VS的扩展中在线安装了qt插件&#xff0c; 安装了一半&#xff0c;比较慢&#xff0c;直接强行退出了。。 后来安装了qt官网的插件。。。。 2、报…

OpenCV 调用自定义训练的 YOLO-V8 Onnx 模型

一、YOLO-V8 转 Onnx 在本专栏的前面几篇文章中&#xff0c;我们使用 ultralytics 公司开源发布的 YOLO-V8 模型&#xff0c;分别 Fine-Tuning 实验了 目标检测、关键点检测、分类 任务&#xff0c;实验后发现效果都非常的不错&#xff0c;但是前面的演示都是基于 ultralytics…

【SpringCloud】Zuul源码解析

Zuul是一个网关组件&#xff0c;是微服务的入口&#xff0c;网关会根据配置将请求转发给指定的服务。本章分析Zuul组件是如何实现请求过滤和转发的 参考源码&#xff1a;<spring-cloud.version>Hoxton.SR9</spring-cloud.version> 1、过滤 spring-cloud-netflix-…

重温react-13(嵌套路由和重定向等)

重定向和404 import React from react; import { Routes, Route, Link,NavLink ,Navigate} from react-router-dom; import Home from ./Home/Home import About from ./About/About import News from ./News/News import NotFound from ./NotFound/NotFound; export default …

51单片机第18步_将TIM0用作13位定时器

本章重点学习将TIM0用作13位定时器。 1、定时器0工作在模式0框图 2、定时器0工作在模式0举例 1、Keil C51中有一些关键字&#xff0c;需要牢记&#xff1a; interrupt 0&#xff1a;指定当前函数为外部中断0&#xff1b; interrupt 1&#xff1a;指定当前函数为定时器0中断…

VUE 修改密码功能+密码强度校验

效果图 <template><el-dialogtitle"修改密码":visible.sync"dialog":before-close"cancel":close-on-click-modal"false"width"500px":modal"false"><el-form ref"form" :model"…

SpringMvc 执行原理

当用户请求 会发送到前端控制器&#xff0c;DisptcherServlet根据请求参数生成代理请求&#xff0c;找到对应的实际控制器&#xff0c;控制器处理请求&#xff0c;创建数据模型&#xff0c;访问数据库&#xff0c;将模型响应给中心控制器&#xff0c;控制器使用模型与视图渲染视…

算法题型归类整理及同类题型解法思路总结(持续更新)

1、最优路线 通用思路 1、递归 #案例1-最优路测路线 题目描述 评估一个网络的信号质量&#xff0c;其中一个做法是将网络划分为栅格&#xff0c;然后对每个栅格的信号质量计算。 路测的时候&#xff0c;希望选择一条信号最好的路线&#xff08;彼此相连的栅格集合&#x…

人工智能的目标分类

欢迎来到 Papicatch的博客 目录 &#x1f349;引言 &#x1f349;目标分类的概述 &#x1f348;背景 &#x1f348;分类的重要性 &#x1f34d;明确研究重点 &#x1f34d;促进应用推广 &#x1f34d;便于评估和比较 &#x1f348;分类的原则 &#x1f34d;基于应用领…

F_GETDOWN的例子

代码&#xff1a; 7:46 2024/7/1#include <unistd.h> #include <fcntl.h> #include <stdio.h> int main(void) {int uid;int fdopen("test.txt",O_RDWR);uidfcntl(fd,F_GETOWN);printf("the SIG recv ID is %d\n",uid);close(fd);retur…

使用 Vue 实现包含单选框的弹窗功能(附Demo)

目录 前言1. Vue22. Vue3 前言 如果在弹窗中单独增设一些选项或者少部分的数据&#xff0c;可用如下的方式 &#xff08;不用单独创建专门的表单样式&#xff09; 如果单纯可以通过基本的按钮传输给后端&#xff0c;可用如下知识点 对于弹窗的基本知识推荐阅读&#xff1a; …

了解 ZooKeeper:关键概念和架构

ZooKeeper 是一种分布式协调服务&#xff0c;广泛用于分布式系统中&#xff0c;用于维护配置信息、命名、同步和组服务。它最初由雅虎开发&#xff0c;现在是一个 Apache 项目&#xff0c;已成为许多大型分布式应用程序不可或缺的一部分。本文深入探讨 ZooKeeper 的关键概念和架…