C++day7

一、思维导图

二、模板类实现myStack和myQueue

#include <iostream>using namespace std;template <typename T>
class MyStack {
private:T* arr;int capacity;int topIndex;public:MyStack(int size);~MyStack();void push(const T& value);void pop();T top() const;bool empty() const;size_t size() const;
};template <typename T>
MyStack<T>::MyStack(int size) {capacity = size;arr = new T[capacity];topIndex = -1;
}template <typename T>
MyStack<T>::~MyStack() {delete[] arr;
}template <typename T>
void MyStack<T>::push(const T& value) {if (topIndex == capacity - 1) {cout << "栈已满,无法添加元素" << endl;return;}arr[++topIndex] = value;
}template <typename T>
void MyStack<T>::pop() {if (topIndex == -1) {cout << "栈为空,无法弹出元素" << endl;return;}topIndex--;
}template <typename T>
T MyStack<T>::top() const {if (topIndex == -1) {cout << "栈为空,无法获取顶部元素" << endl;return T(); // 返回默认构造的元素}return arr[topIndex];
}template <typename T>
bool MyStack<T>::empty() const {return topIndex == -1;
}template <typename T>
size_t MyStack<T>::size() const {return topIndex + 1;
}int main() {MyStack<int> myStack1(5);myStack1.push(1);myStack1.push(2);myStack1.push(3);cout << "栈顶元素: " << myStack1.top() << endl;myStack1.pop();cout << "栈顶元素: " << myStack1.top() << endl;MyStack<string> myStack2(5);myStack2.push("A");myStack2.push("B");myStack2.push("C");cout << "栈顶元素: " << myStack2.top() <<endl;myStack2.pop();cout << "栈顶元素: " << myStack2.top() << endl;return 0;
}

#include <iostream>using namespace std;#ifndef MYQUEUE_H
#define MYQUEUE_Htemplate <typename T>
class myQueue
{
private:T *data;size_t frontIndex;size_t backIndex;size_t capacity;public:myQueue();myQueue(size_t cap);myQueue(const myQueue& other);virtual ~myQueue();myQueue& operator=(const myQueue other);void expend();T& front();T& back();bool empty();size_t get_size();myQueue& push(T element);myQueue& pop();
};#endif // MYQUEUE_Htemplate <typename T>
myQueue<T>::myQueue():frontIndex(0),backIndex(0),capacity(5) {data = new T [5];
}template <typename T>
myQueue<T>::myQueue(size_t cap):frontIndex(0),backIndex(0) {data = new T[cap];capacity = cap;
}template <typename T>
myQueue<T>::myQueue(const myQueue& other) {if(this != &other) {capacity = other.capacity;data = new T[capacity];frontIndex = other.frontIndex;backIndex = other.backIndex;copy(other.data, other.data + capacity, data);}
}template <typename T>
myQueue<T>::~myQueue() {delete []data;
}template <typename T>
myQueue<T>& myQueue<T>::operator=(const myQueue other) {if (this == &other) {return *this;}delete[] data;capacity = other.capacity;frontIndex = other.frontIndex;backIndex = other.backIndex;data = new T[capacity];copy(other.data, other.data + capacity, data);return *this;
}template <typename T>
void myQueue<T>::expend() {size_t newCapacity = capacity * 2;T* newData = new T[newCapacity];copy(data, data + capacity, newData);delete[] data;data = newData;capacity = newCapacity;
}template <typename T>
T& myQueue<T>::front() {return data[frontIndex];
}template <typename T>
T& myQueue<T>::back() {return data[backIndex-1];
}template <typename T>
bool myQueue<T>::empty() {return (frontIndex == backIndex);
}template <typename T>
size_t myQueue<T>::get_size() {return (backIndex - frontIndex);
}template <typename T>
myQueue<T>& myQueue<T>::push(T element) {if(capacity == (backIndex+1)) {this->expend();}this->data[backIndex] = element;this->backIndex++;return *this;
}template <typename T>
myQueue<T>& myQueue<T>::pop() {if (empty()) {throw runtime_error("Queue is empty");}frontIndex++;return *this;
}int main() {myQueue<int> myQueue1(5);myQueue1.push(1);myQueue1.push(2);myQueue1.push(3);cout << "队列首元素: " << myQueue1.front() << endl;myQueue1.pop();cout << "队列首元素: " << myQueue1.front() << endl;myQueue<string> myQueue2(5);myQueue2.push("A");myQueue2.push("B");myQueue2.push("C");cout << "队列首元素: " << myQueue2.front() <<endl;myQueue2.pop();cout << "队列首元素: " << myQueue2.front() << endl;return 0;
}

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

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

相关文章

无线通信 | 射频校准的概念、作用和步骤以及相关仪器

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、射频校准 1、射频校…

面向物联网基础的智能农业环境的节能边缘-雾-云计算架构

这篇论文的标题是《Energy-Efficient Edge-Fog-Cloud Architecture for IoT-Based Smart Agriculture Environment》&#xff0c;作者是Hatem A. Alharbi和Mohammad Aldossary&#xff0c;发表在IEEE Access期刊上。论文的主要内容可以概括为以下几个部分&#xff1a; 摘要&am…

戏曲文化苑管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;操作日志管理&#xff0c;基础数据管理&#xff0c;公告管理&#xff0c;戏曲管理&#xff0c;用户管理&#xff0c;轮播图信息 微信端账号功能包括&#xff1a;系统首页&#…

vue 使用vue-quill-editor 富文本添加源码模式,查看源码功能和表格功能

今天接到个需求&#xff0c;在富文本中增加查看源码和增加表格功能&#xff0c;感觉这种功能手拿把掐&#xff0c;但是奈于平时沉迷于移动端有段时间没写pc了&#xff0c;看了下官方感觉一个头两个大&#xff0c;于是在茫茫文档中各种借鉴&#xff08;抄袭&#xff09;完成了功…

口袋微店多店铺管理解决方案:甜羊浏览器的应用

#### 前言 随着移动互联网的快速发展&#xff0c;口袋微店成为了众多商家首选的在线销售平台。然而&#xff0c;对于拥有多个口袋微店店铺的商家而言&#xff0c;如何高效地管理这些店铺成为了一大挑战。为了帮助商家解决这一难题&#xff0c;我们推荐使用甜羊浏览器&#xff…

局域网一套键鼠控制两台电脑(台式机和笔记本)

服务端&#xff08;有键盘和鼠标的电脑作为服务端&#xff09; 下载软件 分享文件&#xff1a;BarrierSetup-2.3.3.exe 链接&#xff1a;https://pan.xunlei.com/s/VO66rAZkzxTxVm-0QRCJ33mMA1?pwd4jde# 配置服务端 一&#xff0c; 二&#xff0c; 客户端屏幕名称一定要和…

携手浙商证券、华锐技术,共话交易技术的创新与应用

秉承“虚已者进德之基&#xff0c;求同存异谓之共赢”的理念&#xff0c;浙商证券联合非凸科技、华锐技术于8月28日在深圳举办了“量化机遇汇浙&#xff0c;交易技术共商”鑫管家私募沙龙纷享会。此次活动汇聚了众多优秀管理人与资方代表&#xff0c;分享前沿观点&#xff0c;探…

机器学习-逻辑回归原理及其公式

逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛应用于分类任务的统计学方法&#xff0c;尤其是在二分类问题中表现尤为突出。尽管它的名字中包含“回归”&#xff0c;但实际上逻辑回归是一种分类算法。逻辑回归的目标是预测一个样本属于某一类别的概率&#x…

链表题目训练

https://leetcode.cn/problems/remove-linked-li​​​​​​st-elements/description/第一题&#xff1a;移除链表元素 https://leetcode.cn/problems/remove-linked-li​​​​​​st-elements/description/ 第二题&#xff1a;反转链表 https://leetcode.cn/problems/reve…

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络) 文章目录 Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)前言一、Ubuntu依赖安装二、创建操作目录, 下载build_chain.sh脚本2.1 先…

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait&#xff0c;能根据用户提供的文本描述&#xff0c;快速生成既忠实于原图又能灵活调整的个性化人像&#xff0c;用户甚至可以通过简单的句子来描述多个不同的人物&#xff0c;而不需要一一指定每个人的位置。这种设计大大简化了用户的操作&#xff0c;提升了…

我的可视化表达引擎真高可用了

原来有这么多时间 六月的那么一天&#xff0c;天气比以往时候都更凉爽&#xff0c;媳妇边收拾桌子&#xff0c;边漫不经心的对我说&#xff1a;你最近好像都没怎么阅读了。 正刷着新闻我&#xff0c;如同被一记响亮的晴空霹雳击中一般&#xff0c;不知所措。是了&#xff0c;最…

记一次knife4j文档请求异常 SyntaxError: Unexpected token ‘<‘, ... is not valid JSON

knife4j页面报错问题定位 前几天开发新接口&#xff0c;开发完成后想使用knife4j测试一下接口功能&#xff0c;突然发现访问页面报错提示&#xff1a;knife4j文档请求异常&#xff0c;但之前运行还是正常的&#xff0c;想想会不会与升级依赖有关系&#xff0c;启动其他微服务发…

如何优化谷歌排名更有效?

要想提高排名&#xff0c;首先得从用户的角度出发。要想他们在搜索时最关心什么问题&#xff0c;急需解决哪些痛点&#xff0c;之后要做的就是创建GHA高质量内容&#xff0c;创建内容时尽量深入探讨这些问题&#xff0c;而不是泛泛而谈。内容要自然&#xff0c;尽量避免过多的关…

StorageSync数据缓存API

uni.setStorageSyncs参数:将 data 存储在本地缓存中指定的 key 中&#xff0c;会覆盖掉原来该 key 对应的内容&#xff0c;这是一个同步接口。 uni.setStorageSync函数里面写两个参数,分别是key和值,两个参数名称可以随便取,如果有同名的key,那么后面key的值会覆盖掉前面key的值…

基于C#的UDP协议消息传输

1. 服务端 internal class Program{static void Main(string[] args){//1.创建SocketSocket socketServer new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);//2.绑定IP、端口号EndPoint endPoint new IPEndPoint(IPAddress.Parse("127.0.0.1&…

Deep Ocr

1.圈出内容,文本那里要有内容.然后你保存,并导出数据集. 2.找出deep_ocr_recognition_training_workflow.hdev 文件.修改“DatasetFilename : Test.hdict” 310行 write_deep_ocr (DeepOcrHandle, BestModelDeepOCRFilename) 3.推理test.hdev 但发现很慢&#xff0c;没有mlp…

深入RabbitMQ世界:探索3种队列、4种交换机、7大工作模式及常见概念

文章目录 文章导图RabbitMQ架构及相关概念四大核心概念名词解读 七大工作模式及四大交换机类型0、前置了解-默认交换机DirectExchange1、简单模式(Simple Queue)-默认DirectExchange2、 工作队列模式(Work Queues)-默认DirectExchange3、发布/订阅模式(Publish/Subscribe)-Fano…

【IEEE独立出版 | 往届快至会后2个月检索,刊后1个月检索】2024年第四届电子信息工程与计算机科学国际会议(EIECS 2024)

在线投稿&#xff1a;学术会议-学术交流征稿-学术会议在线-艾思科蓝 电子信息的出现与计算机技术、通信技术和高密度存储技术的迅速发展并在各个领域里得到广泛应用有着密切关系。作为高技术领域中重要的前沿技术之一&#xff0c;电子信息工程具有前瞻性、先导性的特点&#x…

MySQL 查询优化秘籍:让你的数据库查询飞起来

《MySQL 查询优化秘籍&#xff1a;让你的数据库查询飞起来》 在数据库应用中&#xff0c;高效的查询性能至关重要。MySQL 作为广泛使用的关系型数据库&#xff0c;掌握一些常用的查询优化方法可以极大地提升系统的响应速度和性能。今天&#xff0c;我们就来一起探讨常用的优化…