【C++】deque容器

2023-11-06

0.前言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.deque构造函数

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;
#include <deque>

//deque构造函数
void printDeque(const deque<int>& d)
{
	for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
	{
		//*it = 100;  //加了const就不能再修改容器中的数据了
		cout << *it << " ";
	}
	cout << endl;
}

void test01()
{
	deque<int>d1;
	for (int i = 0; i < 10; i++)
	{
		d1.push_back(i);
	}
	printDeque(d1);

	deque<int>d2(d1.begin(), d1.end());
	printDeque(d2);

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

	deque<int>d4(d3);
	printDeque(d4);
}


int main() {

	test01();
	//test02();

	//**************************************
	system("pause");
	return 0;
}

在这里插入图片描述

2.deque赋值操作

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;
#include <deque>

//deque赋值操作
void printDeque(const deque<int>& d)
{
	for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
	{
		//*it = 100;//加了const就不能再修改容器中的数据了
		cout << *it << " ";
	}
	cout << endl;
}

void test01()
{
	deque<int>d1;
	for (int i = 0; i < 10; i++)
	{
		d1.push_back(i);
	}
	printDeque(d1);

	//operator=赋值
	deque<int>d2;
	d2 = d1;
	printDeque(d2);

	//assign 赋值
	deque<int>d3;
	d3.assign(d2.begin(), d2.end());
	printDeque(d3);

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

int main() {

	test01();
	//test02();

	//**************************************
	system("pause");
	return 0;
}

在这里插入图片描述

3.deque大小操作

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;

#include<deque>
//deque 大小操作
void printDeque(const deque<int>& d)
{
	for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

void test01()
{
	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.size = " << d1.size() << endl;
		//deque容器没有容量的概念 d1.capacity() 没有这个接口 deque是无限扩容的
	}

	//重新指定大小
	d1.resize(15); //扩容的默认值为0
	printDeque(d1);
	d1.resize(20, 1);
	printDeque(d1);

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

int main() {

	test01();
	//test02();

	//**************************************
	system("pause");
	return 0;
}

在这里插入图片描述

4.deque插入和删除

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;

#include<deque>
//deque插入和删除
void printDeque(const deque<int>&d)
{
	for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

//头删和尾删
void test01()
{
	deque<int>d1;
	//尾插
	d1.push_back(10);
	d1.push_back(20);

	//头插
	d1.push_front(100);
	d1.push_front(200);

	//200 100 10 20
	printDeque(d1);

	//尾删
	d1.pop_back();
	//200 100 10
	printDeque(d1);

	//头删
	d1.pop_front();
	// 100 10
	printDeque(d1);
}

//插入
void test02()
{
	deque<int>d1;
	d1.push_back(10);
	d1.push_back(20);
	d1.push_front(100);
	d1.push_front(200);

	// 200 100 10 20
	printDeque(d1);

	//insert插入
	d1.insert(d1.begin(), 1000);
	// 1000 200 100 10 20
	printDeque(d1);

	d1.insert(d1.begin(), 2, 10000);
	// 10000 1000 200 100 10 20
	printDeque(d1);

	deque<int>d2 = { 10,20,30 };
	d2.push_back(40);
	// d2 : 10 20 30 40
	d1.insert(d1.begin(), d2.begin(), d2.end()); //在指定位置插入一个区间
	printDeque(d1);
}

//删除和清空
void test03()
{
	deque<int>d1;
	d1.push_back(10);
	d1.push_back(20);
	d1.push_front(100);
	d1.push_front(200);

	//删除
	deque<int>::iterator it = d1.begin();
	it++;  //用这种方式可以指定删除哪个位置上数据
	d1.erase(it);
	//200 10 20
	printDeque(d1);

	//按区间方式删除
	//d1.erase(d1.begin(),d1.end()); //结合80行代码的方式便可以指定删除指定区间的数据
	//清空
	d1.clear();
	printDeque(d1);
}

int main() 
{
	cout << "test01: " << endl;
	test01();
	cout << endl << "test02: " << endl;
	test02();
	cout << endl << "test03: " << endl;
	test03();

	//**************************************
	system("pause");
	return 0;
}

在这里插入图片描述

5.deque数据存取

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;

#include <deque>
//deque数据存取
void test01() 
{
	deque<int>d1;
	d1.push_back(10);
	d1.push_back(20);
	d1.push_front(30);
	d1.push_front(40);

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

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

	cout << "第一个元素:" << d1.front() << endl;
	cout << "最后一个元素:" << d1.back() << endl;
}
int main() 
{

	test01();

	//test02();

	//test03();

	//**************************************
	system("pause");
	return 0;
}

在这里插入图片描述

6.deque排序

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;

#include <deque>
#include <algorithm>
//deque排序

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

//排序
void test01()
{
	deque<int>d1;
	d1.push_back(1);
	d1.push_back(2);
	d1.push_front(3);
	d1.push_front(4);
	
	cout << "排序前:" << endl;
	printDeque(d1);

	//排序 默认排序规则 从小到大 升序
	//对于支持随机访问的迭代器的容器,
	//都可以利用sort算法直接对其进行排序。
	//vector容器也可以利用sort进行排序
	sort(d1.begin(), d1.end());
	cout << "排序后:" << endl;
	printDeque(d1);

}
int main() 
{

	test01();

	//test02();

	//test03();

	//**************************************
	system("pause");
	return 0;
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C++】deque容器 的相关文章

随机推荐

  • 微信公众号开发笔记9(微信小程序、公众号网页实现上拉加载下拉刷新)

    目录 微信公众号网页WEUI mescroll js实现上拉加载下拉刷新 最终效果图 HTML页面代码 js部分 CSS样式 需要引用的前端资源 有其他问题请联系我 微信公众号网页WEUI mescroll js实现上拉加载下拉刷新 使用m
  • 苹果Mac OS X 10.6 Snow Leopard雪豹操作系统BT种子(.torrent)下载,6.13G个人版和Sever服务器版

    之前说过 苹果Mac OS X 10 6 Snow Leopard雪豹操作系统8月28日上市 今天从网上找到了苹果电脑Mac OS X 10 6 Snow Leopard雪豹操作系统BT种子 torrent文件 没装BT下载软件的苹果用户请
  • 三大涉黄APP被端!7000名女主播直播果聊内幕曝光

    关注后回复 进群 拉你进程序员交流群 作者丨Seven 7 来源丨扩展迷EXTFANS 随着网络的不断发展 直播也越来越受到大众的欢迎 自然而然 一些不法分子也从中嗅到商机 小哥哥 你想看什么 给我点赞 给我打赏 你想看啥都可以 果聊直播
  • js打砖块

    需求分析 1 小球在触碰到大盒子上 左 右边框 以及滑块后沿另一方向反弹 在碰到底边框后游戏结束 2 小球在触碰到方块之后 方块消失 3 消除所有方块获得游戏胜利 4 可通过鼠标与键盘两种方式移动滑块 代码分析 HTML代码 左边提示框盒子
  • 2023电工杯数学建模B题分析

    本次电工杯的A专业性较强 建议入门从B开始 本题目看上去一眼非常简单 实则考验数据的处理能力 分析能力以及如何在简单题目下能做得更加出众 讲论文写好抓住评委眼球 如果您阅读过往年国赛题目 您可以发现2021 BC 和2022C基本都是一眼就
  • GPIO操作0基础

    1 1GPIO结构 1 2固件库组织代码步骤 1 3IO口操作步骤 常用技巧总结 1 4IO口位操作 1 1 GPIO结构 1 基本结构 2 工作模式 3 寄存器地址 typedef struct stm32f10x h 定位到 GPIO
  • 【C语言】【猜数字】【极简】

    include
  • 登录注册,文件增删查改实现

    登录注册文件增删查改实现 需求 实现登录功能 注册功能 登录后文件可以进行增加删除修改查看等基本功能的操作 知识点 mybatis Tomcat servlet asion json req resp session 前提准备 pom xm
  • 对话量子链创始人帅初:区块链发展目标是构建协同进化的生命体

    有人说 区块链没有春节 只有春天 2月17日 大年初二 Qtum量子链创始人帅初在社区分享了自己关于区块链的25个看法 涵盖了公有链技术演进 区块链项目估值模型 区块链领域投资机会 区块链技术未来畅想等方方面面 引发了热议 ETH最大的风险
  • cocos 2.4.10升级到3.7

    Cocos Creator 3D v1 2 0 新版本中的cc找不到的解决办法 NZD Target的博客 CSDN博客 https www cnblogs com creator star p 17041314 html
  • 农夫和奶牛-二分(未完成没搞懂题目)

    农夫 John 建造了一座很长的畜栏 它包括N 2 lt N lt 100 000 个隔间 这些小隔间依次编号为x1 xN 0 lt xi lt 1 000 000 000 但是 John的C 2 lt C lt N 头牛们并不喜欢这种布局
  • c++11 std::enable_if在模板偏特化的妙用

    1 模板自动推导功能 先看个例子 在调用TestTemplate函数时 我们可以在函数后面加上 lt 类型 gt 无歧义地指定调用的版本 结果如下 由于模板参数在函数参数中的位置是固定的 编译器其实可以推导出参数的类型 这样程序员们就可以不
  • 无线网络几种攻击方式

    Evil Twin Attack 双面恶魔攻击 攻击者使用相同的SSID创建一个欺诈性接入点 因为与受害者常用SSID名称一样 并且具有更强的型号 因此可以轻易欺骗受害者与之连接 建立连接后 攻击者可以替换网页 比如亚马逊付费界面替换成攻击
  • 字符串转换成数字的方法【C#】

    在C 中 经常需要将字符串转换成数字 简单总结三种方法 一 Convert 将一个基本数据类型转换成另一个基本数据类型 比如 将用户输入的数学成绩进行转换 int math Convert ToInt32 Console ReadLine
  • Nginx+Tomcat负载均衡、动静分离

    一 Tomcat多实例部署 Tomcat的多实例部署简单的讲就是基于端口的虚拟主机设置 1 1 安装jdk 1 安装jdk 某rpm包尚未安装 我们可以通过该命令查询其说明信息 安装以后会生成的文件 rpm qpl jdk 8u201 li
  • oracle查询某一个字段的数量总和

    select count from select count from 表名称 group by 多种数据量 表名 举个栗子 比如说我有一个数据类型的字段 里面有很多种的数据类型 而且每个数据类型都有近些年的数据 就是有很多重复的数据类型的
  • 【踩坑专栏】0%classes,0% lines covered

    这东西一般都是不小心点到debug按钮右边的coverage按钮出现的 解决办法 Ctrl Alt F6 取消勾选你的应用 点击最左侧的show detected 或直接点击下方中间的no coverage 参考文章 1 IDEA 项目结构
  • python连接数据库

    参考python核心编程 编写一个用户洗牌的脚本 根据用户输入 选择连接sqlserver或者MySQL 创建数据库 表 随机生成数据 并实现增删改查 其中 为了兼容python2和python3 统一了打印函数 录入函数 动态导包等 一些
  • mysql怎么让表中某一列字段按某字符分割一行变成多行

    注意暂时看不懂的请看下列的解析方法 代码下面有具体解释 SELECT a XH substring index substring index a QZYSBM b help topic id 1 1 AS splitName FROM S
  • 【C++】deque容器

    0 前言 1 deque构造函数 include