c++学习:容器stack栈+queue+map(简易输入法)+deque

目录

stack

模板原型

头文件

模板的成员类型和成员对象和成员函数

栈类模板的容器对象

实例

queue

模板原型

头文件

模板的成员类型和成员对象和成员函数

队列类模板的容器对象

实例

map

模板原型

头文件

模板的成员类型和成员对象和成员函数

关联类模板的容器对象

实例1

实例2

deque

模板原型

头文件

模板的成员类型和成员对象和成员函数

双端队列类模板的容器对象

实例1


stack

std::stack 类是一种容器适配器,是栈——先进后出数据结构

模板原型

template<class T,class Container = std::deque<T>
> class stack;

头文件

#include <stack>

模板的成员类型和成员对象和成员函数

std::stack - cppreference.comicon-default.png?t=N7T8https://zh.cppreference.com/w/cpp/container/stack

栈类模板的容器对象

//实例化一个 栈类模板的容器对象
std::stack<std::string> stack;

实例

#include <iostream>
#include <stack>using namespace std;int main()
{//栈这种数据结构----先进后出//实例化一个 栈类模板的容器对象  栈的成员类型是stringstd::stack<std::string> stack;//入栈 --向栈顶插入元素stack.push("zhang3");stack.push("li4");stack.push("wang5");stack.push("lao6");//出栈while(1){//出栈的数据如何获取数据cout<<stack.top()<<endl;//删除--删除栈顶stack.pop();//判断栈是否为空if(stack.empty() == true)break;}return 0;
}

queue

std::queue 类是一种容器适配器,是队列——先进先出数据结构

模板原型

template<class T,class Container = std::deque<T>
> class queue;

头文件

#include <queue>

模板的成员类型和成员对象和成员函数

std::queue - cppreference.comicon-default.png?t=N7T8https://zh.cppreference.com/w/cpp/container/queue

队列类模板的容器对象

    //实例化 队列类模板的对象std::queue<std::string> queue;

实例

#include <iostream>
#include <queue>using namespace std;int main()
{//实例化 队列类模板的对象std::queue<std::string> queue;//入队--尾插  ---两端操作queue.push("zhang3");queue.push("li4");queue.push("wang5");queue.push("lao6");//判断队列是否为空while(!queue.empty()){//出队之前,先获取数据--头部数据cout<<queue.front()<<endl;//出队,头部数据删除queue.pop();}return 0;
}

map

std::map 是一种有序关联容器,它包含具有唯一键的键值对。键之间以比较函数 Compare 排序。搜索、移除和插入操作拥有对数复杂度。map 通常实现为红黑树。

模板原型

template<class Key,class T,class Compare = std::less<Key>,class Allocator = std::allocator<std::pair<const Key, T>>
> class map;

头文件

#include <map>

模板的成员类型和成员对象和成员函数

std::map - cppreference.comicon-default.png?t=N7T8https://zh.cppreference.com/w/cpp/container/map

关联类模板的容器对象

    //实例化一个关联容器类模板的对象//数据格式:  键值对的方式存在   key-valuestd::map<long int,std::string> map;//实例化一个键值对类模板的对象std::pair<long int,std::string> data(200,"lao6");

实例1

#include <iostream>
#include <map>using namespace std;int main()
{//实例化一个关联容器类模板的对象//数据格式:  键值对的方式存在   key(int)-value(string)std::map<long int,std::string> map;//插入数据  operator[]  访问或插入指定的元素map[100] = "zhang3";map[120] = "li4";map[122] = "wang5";//实例化一个键值对类模板的对象std::pair<long int,std::string> data(200,"lao6");//insert插入数据map.insert(data);//访问cout<<map[120]<<endl;//通过迭代器遍历整个容器std::map<long int,std::string>::iterator it;for(it=map.begin(); it!=map.end(); it++){//it->first 得到键   second 得到值cout<<it->first<<"\t"<<it->second<<endl;}return 0;
}

实例2  简易输入法

#include <iostream>
#include <map>
using namespace std;int main()
{//实现一个简单的拼音中文输入法std::map<string,string> map;//插入数据map["a"] = "啊阿錒吖嗄";map["b"] = "吧把不被表";map["c"] = "从成层出插";map["ni"] = "你尼呢腻拟";while(1){string input;cin>>input;//输入keystring value = map[input];//获取对应key的value//汉字字符串--->utf-8占3个字节   //遍历value for(int i=0; i<value.size()/3; i++)//汉字的个数{cout<<i+1<<" "<<value.substr(3*i,3)<<"\t";}cout<<endl;//根据输入数字显示对应的汉字int num=0;cin>>num;cout<<value.substr(3*(num-1),3)<<endl;}return 0;
}

deque

std::deque(double-ended queue,双端队列)是有索引的序列容器,它允许在它的首尾两端快速插入及删除。另外,在 deque 任一端的插入或删除不会使指向其余元素的指针或引用失效。等于队列和栈的结合体

模板原型

template<class T,class Allocator = std::allocator<T>
> class deque;

头文件

#include <deque>

模板的成员类型和成员对象和成员函数

std::deque - cppreference.comicon-default.png?t=N7T8https://zh.cppreference.com/w/cpp/container/deque

双端队列类模板的容器对象

std::deque<int> deque;

实例1

#include <iostream>
#include <deque>using namespace std;int main()
{std::deque<int> deque;//实现队列功能deque.push_back(10);deque.push_back(20);deque.push_back(30);deque.push_back(40);//遍历for(int i = 0; i<deque.size();i++){cout<<deque[i]<<endl;}//也可以使用迭代器遍历for(std::deque<int>::iterator it = deque.begin();it!=deque.end();it++){cout<<*it<<endl;} //出队 头删//判断是否为空while(!deque.empty()){//先访问头部数据cout<<deque.front()<endl;deque.pop_front();//}return 0;
}

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

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

相关文章

VScode远程连接开发嵌入式开发板

在做嵌入式开发时&#xff0c;很多时候需要远程连接或者远程调试设备&#xff0c;这时可以通过VScode上的插件来很方便的进行远程连接和调试。 ssh远程连接嵌入式开发板&#xff1a; 1、安装vscode ssh远程插件&#xff1a;Remote-SSH。 2、点击""&#xff0c;输入…

构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的MySQL8.0.32的RPM包

本文适用&#xff1a;rhel8系列&#xff0c;或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期&#xff1a;2023年 因系统版本不同&#xff0c;构建部署应略有差异&#xff0c;但本文未做细分&#xff0c;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…

监督学习 - 逻辑回归(Logistic Regression)

什么是机器学习 逻辑回归&#xff08;Logistic Regression&#xff09;虽然名字中包含"回归"一词&#xff0c;但实际上是一种用于解决分类问题的统计学习方法&#xff0c;而不是回归问题。它是一种线性模型&#xff0c;常用于二分类问题&#xff0c;也可以扩展到多分…

Inis博客系统本地部署结合内网穿透实现远程访问本地站点

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总…

搭建sprinboot服务环境

搭建sprinboot服务环境 安装jdk安装nginx安装Redis安装MySQL一 下载MySQL二 安装MySQL三 启动mysql服务获取初始化密码四 登陆MySQL五 修改密码六 设置远程访问七 相关问题错误&#xff1a;1819错误&#xff1a;1251 或 2059错误&#xff1a;10060忽略表名大小写 记录搭建sprin…

【Docker】概述与安装

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一. Docker的概述 1.Docker为什么出现 2…

Vue入门五(Vue-CLI项目搭建|vue项目目录介绍|vue项目开发规范|es6导入导出语法)

文章目录 一、Vue-CLI 项目搭建介绍node环境搭建1) 下载与安装2&#xff09;测试是否安装成功 安装vue-cli安装vue脚手架 创建Vue项目1&#xff09;使用命令创建项目2&#xff09;使用图形化界面创建项目 二、vue项目目录介绍1.命令行运行vue项目2.Pycharm中运行项目3.目录结构…

Java基础项目---飞机大战的简易实现

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 文章目录 推荐阅读前言一、系统分析问题描述总体设计功能流程图 二、程序和算法的介绍FlyingOb…

Open CASCADE学习|参数化球面的奇异性

参数曲面的奇异性是一个相对复杂的概念&#xff0c;它涉及到参数曲面的几何特性和参数化过程中的一些特殊情况。参数曲面通常用于描述三维空间中的复杂形状&#xff0c;通过参数方程将二维参数域映射到三维空间中。然而&#xff0c;在某些情况下&#xff0c;参数曲面可能会表现…

回顾2023,展望未来

回顾2023 重拾博客 CSDN博客创建和写作&#xff0c;几乎是和我正式开始学习编程开始&#xff0c;至今已经6年。刚上编程课的时候&#xff0c;刚上C语言课的时候&#xff0c;老师说可以通过写技术博客来帮助自己更好学习&#xff0c;于是我就开始自己的技术博客编写之旅。 我…

在微信上秒杀链接怎么做_带给用户微信秒杀新体验

微信秒杀新体验&#xff1a;让每一次点击都成为一次抢购的狂欢&#xff01; 在这个数字化、信息化的时代&#xff0c;微信已经成为了我们生活中不可或缺的一部分。与此同时&#xff0c;微信营销也成为了众多商家竞相角逐的新战场。如何在众多的营销信息中脱颖而出&#xff0c;吸…

持续构建行业影响力|HarmonyOS SDK荣膺年度“技术卓越”奖项

自2023年9月华为宣布鸿蒙原生应用全面启动以来&#xff0c;HarmonyOS SDK通过将HarmonyOS系统级能力对外开放&#xff0c;支撑开发者高效打造更纯净、更智能、更精致、更易用的鸿蒙原生应用&#xff0c;和开发者共同成长。 通过在开发者社区和HarmonyOS开发者持续的内容共创与技…

Leetcode 494 目标和

题意理解&#xff1a; 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 &#xff0c;在 1 之前添…

Curl命令POST请求

curl工具介绍&#xff1a; CURL是一个利用URL语法在命令行下工作的文件传输工具&#xff0c;被广泛应用在Unix、Linux发行版中&#xff0c;并且有DOS和Win32、Win64的移植版本。同时它还支持诸多的通信协议&#xff08;我们常用的有HTTP、HTTPS、FTP、SMTP、TELNET等&#xff0…

网站ICP备案和公安备案教程

由于最近华为云那边的服务器到期了&#xff0c;而续费的价格比较贵一点&#xff0c;刚好阿里云这边有活动就入手了一台&#xff0c;但是将网站迁移过来后发现又要进行ICP备案&#xff0c;那就备案呗。但是备案完成之后发现还有一个公安备案&#xff0c;真让人头大啊... 很多人也…

vue3dLoader Cannot read properties of null (reading ‘setCrossOrigin‘)“这个报错怎么解决?

默认情况下crossOrigin默认值是“anonymous” 如果出现报错的情况 请设置crossOrigin为空字符串即可。如&#xff1a; <vue3dLoader crossOrigin""> 相关阅读 推荐&#xff1a;vue-3d-loader支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json&#xff0c;并支…

Java基础到高级:锁的全面解析与实践

前言 在项目开发过程中&#xff0c;当需要使用多线程去处理一些业务问题的时候&#xff0c;尤其涉及到多线程读写数据同时发生的操作时&#xff0c;就会产生一些线程安全的问题。那如何理解线程安全问题呢&#xff1f; 线程安全问题是指多线程环境中&#xff0c;由于存在数据…

Python入门-面向对象

1.类和对象 是不是很熟悉&#xff1f;和Java一样&#xff0c;在Python中&#xff0c;都可以把万物看成(封装成)对象。它俩都是面向对象编程 1.1 查看对象数据类型 a 10 b 9.8 c helloprint(type(a)) print(type(b)) print(type(c))运行结果&#xff1a; D:\Python_Home\v…

k8s-调度 13

调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 kube-scheduler 是 Kubernetes 集群的默认调度器&#xff0c;并且是集群控制面的一部分。 如果你真的希望或者有…

C#上位机与欧姆龙PLC的通信11----【爆肝】上位机应用开发(Winform版)

1、先上图 前面10讲&#xff0c;让你爽煹了肝&#xff0c;已经进入最后收尾阶段&#xff0c;这节来个常规应用&#xff0c;让前面的技能直接飞上天&#xff0c;我们要做的界面软件是这样的&#xff0c;虽然没有潘金莲漂亮&#xff0c;但也是爆抱&#xff1a; 2、如何爆&#x…