C++ --- Day02 封装
stack栈类
stack.h
#ifndef STACK_H
#define STACK_H
#include <iostream>
#include<string>
using namespace std;
//自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量
//成员函数完成:
//构造函数、析构函数、拷贝构造函数
//入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小template <class T>
class Mystack
{
private:T *arr;int top;int size;
public://无参构造函数Mystack(){this->size = 100;this->arr = new T[size];this->top = -1;}//有参构造函数Mystack(int arrnum){this->size = arrnum;this->arr = new T[arrnum];this->top = -1;}//拷贝构造函数Mystack(const Mystack &stk){this->size = stk.size;cout<<this->size << " " << stk.size<<endl;this->arr = new T[size];for(int i = 0 ; i<stk.top ; i++){*(arr+i) = *(stk.arr+i);}this->top = stk.top;cout<<"1top:"<<this->top <<" " << stk.top<<endl;}//拷贝赋值函数Mystack& operator=(const Mystack &stk){this->size = stk.size;this->arr = new T[size];for(int i = 0 ; i<stk.top ; i++){*(arr+i) = *(stk.arr+i);}this->top = stk.top;return *this;}//析构函数~Mystack(){delete arr;}int getTop() const;//判空bool empty();//判满bool full();//入栈void push(T elem);//出栈void pop();//获取栈顶元素T& topelem();//求栈大小int stksize();
};
#endif // STACK_H
main.cpp
#include "stack.cpp"
//int类型
void test()
{cout<<"stk1:"<<endl;Mystack<int> stk(100);for(int i = 0 ; i<10;i++)stk.push(i+1);cout<<"stk的栈顶元素:"<<stk.topelem()<<endl;cout<<"stk的大小:"<<stk.stksize()<<endl;stk.pop();cout<<"stk的栈顶元素:"<<stk.topelem()<<endl;cout<<"stk的大小:"<<stk.stksize()<<endl;cout<<"stk2:"<<endl;Mystack<int> stk2(stk);cout<<"stk2的栈顶元素:"<<stk2.topelem()<<endl;cout<<"stk2的大小:"<<stk2.stksize()<<endl;stk2.pop();cout<<"stk2的栈顶元素:"<<stk2.topelem()<<endl;cout<<"stk2的大小:"<<stk2.stksize()<<endl;
}//string类型
void test2()
{Mystack<string> stk(10);stk.push("1");stk.push("2");stk.push("3");stk.push("4");stk.push("5");stk.push("6");cout<<stk.topelem()<<endl;cout<<stk.stksize()<<endl;stk.pop();cout<<stk.topelem()<<endl;cout<<stk.stksize()<<endl;}
int main()
{test();//test2();return 0;
}
queue.cpp
#include"stack.h"template <class T>
int Mystack<T>::getTop() const
{return top;
}template <class T>
bool Mystack<T>::empty()
{if(top == -1)return true;return false;
}template <class T>
bool Mystack<T>::full()
{if(top == size-1)return true;return false;
}
//入栈
template <class T>
void Mystack<T>::push(T elem)
{if(full())return;top = top + 1;this->arr[top] = elem;}
//出栈
template <class T>
void Mystack<T>::pop()
{if(empty())return;this->top--;
}//获取栈顶元素
template <class T>
T& Mystack<T>::topelem()
{return *(arr+top);
}//求栈大小
template <class T>
int Mystack<T>::stksize()
{return this->top+1;
}
queue队列
queue.h
#ifndef QUEUE_H
#define QUEUE_H
#include <iostream>
//自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置
//成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小
using namespace std;
template <class T>
class Queue
{
private:T *arr;int head;int tail;int size;
public://无参构造Queue();//有参构造Queue(int elemnum);//拷贝构造Queue(const Queue &q);//拷贝赋值函数void operator=(Queue &q);//析构函数~Queue();//判空bool empty();//判满bool full();//入队void push(T elem);//出队void pop();//清空队列void clear();//求队列大小int queuesize();//返回最后一个元素T* back();//返回第一个元素T* front();
};
#endif // QUEUE_H
main.cpp
#include"queue.cpp"void test()
{Queue<int> q1(20);for(int i = 0;i < 10;i++){q1.push(i+1);}cout<<"第一个元素: "<<*q1.front()<<endl;cout<<"最后一个元素: "<<*q1.back()<<endl;q1.pop();cout<<"第一个元素: "<<*q1.front()<<endl;cout<<"最后一个元素: "<<*q1.back()<<endl;Queue<int> q2(q1);cout<<"q2的第一个元素: "<<*q2.front()<<endl;cout<<"q2的最后一个元素: "<<*q2.back()<<endl;Queue<int> q3;q3 = q1;cout<<"q3的第一个元素: "<<*q3.front()<<endl;cout<<"q3的最后一个元素: "<<*q3.back()<<endl;
}
int main()
{test();return 0;
}
queue.cpp
#include"queue.h"
//无参构造
template <class T>
Queue<T>::Queue():arr(new T[100]),head(0),tail(0),size(100)
{
}
//有参构造
template <class T>
Queue<T>::Queue(int elemnum):arr(new T[elemnum]),head(0),tail(0),size(elemnum)
{
}
//拷贝构造
template <class T>
Queue<T>::Queue(const Queue &q):arr(new T[q.size]),head(q.head),tail(q.tail),size(q.size)
{int i = q.head;while(i != q.tail){*(this->arr+i) = *(q.arr+i);i = (i+1+q.size)%q.size;}
}
//析构函数
template <class T>
Queue<T>::~Queue()
{delete arr;
}
//拷贝赋值函数
template <class T>
void Queue<T>::operator=(Queue &q)
{arr = new T[q.size];head = q.head;tail = q.tail;size = q.size;int i = q.head;while(i != q.tail){*(this->arr+i) = *(q.arr+i);i = (i+1+q.size)%q.size;}return *this;
}
//判空
template <class T>
bool Queue<T>::empty()
{return head == tail;
}
//判满
template <class T>
bool Queue<T>::full()
{return (tail+1)%size == head;
}//入队
template <class T>
void Queue<T>::push(T elem)
{if(full())cout<<"队满"<<endl;else{arr[tail] = elem;tail=(tail+1)%size;}
}
//出队
template <class T>
void Queue<T>::pop()
{if(empty()){}elsehead=(head+1)%size;
}
//清空队列
template <class T>
void Queue<T>::clear()
{head = 0;tail = head;
}
//求队列大小
template <class T>
int Queue<T>::queuesize()
{return (tail+size-head)%size;
}
//返回最后一个元素
template <class T>
T* Queue<T>::back()
{if(empty()){T *elem = nullptr;cout<<"空队列"<<endl;return elem;}elsereturn arr+(tail+size-1)%size;
}
//返回第一个元素
template <class T>
T* Queue<T>::front()
{if(empty()){T *elem = nullptr;cout<<"空队列"<<endl;return elem;}elsereturn arr+head;
}
相关文章:
C++ --- Day02 封装
stack栈类 stack.h #ifndef STACK_H #define STACK_H #include <iostream> #include<string> using namespace std; //自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量 //成员函数完成: //构造函数、析构函数、拷贝构造函数 //入栈、出…...
墨西哥专线清关有什么要求?
墨西哥专线的清关要求是根据当地法规和国际贸易协定而定的。以下是一些墨西哥专线清关的常见要求: 一、 清关文件 进口货物需要提供一系列文件,包括商业发票、装箱单、进口许可证、运输文件、保险文件等。这些文件需要准确、完整地填写,并且…...
SpringMVC中的JSR303与拦截器的使用
一,JSR303的概念 JSR303是Java中的一个标准,用于验证和校验JavaBean对象的属性的合法性。它提供了一组用于定义验证规则的注解,如NotNull、Min、Max等。在Spring MVC中,可以使用JSR303注解对请求参数进行校验。 1.2 为什么要使用J…...
神经网络 01(介绍)
一、神经网络 人工神经网络 (Artificial Neural Network,简写为ANN)也简称为神经网络 (NN),是一种模仿生物神经网络结构和功能的 计算模型。人脑可以看做是一个生物神经网络,由众多的神经元连接而成。各个神经元传递复杂的电信号,…...
【element-ui】el-date-picker 之picker-options时间选择区间禁用效果的实现
element-ui 时间选择器的时间区间禁用dom层引入:picker-option <el-date-pickerv-model"searchFormObj.workTime"clearablevalue-formate"yyyy-MM-dd":picker-options"pickerOptions"placeholder"请选择时间" ></el-date-pi…...
Exchange Serve各版本说明及下载
Exchange Server各版本说明及官方下载 简介Exchange Server2019Exchange Server2016Exchange Server2013 本文为Exchange Server2013、Exchange Server2016及Exchange Server2019官方下载汇总,记录各版本号及发布日期的Exchange Server软件包 未经本人允许请勿转载&…...
软件测试 | 当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?
首先,回答这个问题之前,你需要明确你所面试的职位需要什么样的测试环境。一些公司可能需要测试基础软件,而另一些公司则可能需要测试复杂的软件系统。因此,在回答这个问题之前,你需要了解面试职位所需要的测试环境是什…...
15.3K Star,超好用的开源协作式数字白板:tldraw
大家好,我是TJ 今天给大家推荐一个开源协作式数字白板:tldraw。 tldraw的编辑器、用户界面和其他底层库都是开源的,你可以在它的开源仓库中找到它们。它们也在NPM上分发,提供开发者使用。您可以使用tlDraw为您的产品创建一个临时…...
MGR新节点RECOVERING状态的分析与解决:caching_sha2_password验证插件的影响
起因 在GreatSQL社区上有一位用户提出了“手工构建MGR碰到的次节点一直处于recovering状态”,经过排查后,发现了是因为新密码验证插件caching_sha2_password导致的从节点一直无法连接主节点,帖子地址:(https://greatsql.cn/threa…...
git merging两边都被删除的文件
1. 场景: merge 另一个分支到当前分支,解决完冲突列表中的冲突后,发现项目任然在 merging 中,无法进行git下一步操作。 2. 原因: 通过 git status 发现一个文件,显示表面,该文件在当前分支和…...
项目--苍穹外卖
1.| constant | 存放相关常量类 | | context | 存放上下文类 | | enumeration | 项目的枚举类存储 | | exception | 存放自定义异常类 | | json | 处理json转换的类 | | properties | 存放SpringBoot相关的配置属性类 | | result | 返回结果类的封装 | | utils | 常用工具类 | …...
从零开发短视频电商 使用Spring WebClient发起远程Http调用
文章目录 依赖使用创建WebClient实例创建带有超时的WebClient实例示例 请求准备获取响应 高级过滤器自定义过滤器 自定义线程池自定义WebClient连接池开启日志错误处理最佳实践 示例异步请求同步请求上传文件重试过滤错误错误处理 参考 Spring WebClient 是 Spring WebFlux 项目…...
Python实现成语接龙
如图: 详细代码实现: # coding:utf-8 import string import pypinyin import sys import randomprint("初始化中,请稍等……")def main():f2 open(./idiom.txt, r, encodingutf-8)f f2.read() # 一次性读取完成new3_list f.sp…...
继续上一个爬虫,所以说selenium加browsermobproxy
继续,书接上回,这次我通过jsrpc,也学会了不少逆向的知识,感觉对于一般的网站应该都能应付了。当然我说的是简单的网站,遇到那些混淆的,还有那种猿人学里面的题目,还是免谈了。那种需要的水平太高…...
Sentinel服务熔断和流控
Sentinel服务熔断和流控 简介 Sentinel 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来…...
01_TMS320F28004x系列MCU介绍和资料搜集
1. TI C2000 实时微控制器 TI公司在处理器方面的产品线有:基于ARM内核的微控制器/微处理器、MSP430微控制器、C2000系列实时微控制器、还有数字信号处理器(DSP)。 其中,C2000是TI公司专门针对实时控制推出的32位微控制器。TI公司…...
JavaScript中获取对象属性的不同方法
JavaScript中获取对象属性的不同方法 文章目录 JavaScript中获取对象属性的不同方法一、点记法二、方括号记法三、Object.keys()方法四、Object.values()方法五、Object.entries()方法六、Object.getOwnPropertyNames()方法七、Object.getOwnPropertyDescriptors()方法 JavaScr…...
【STM32教程】第四章 STM32的外部中断EXTI
案例代码及相关资料下载链接: 链接:https://pan.baidu.com/s/1hsIibEmsB91xFclJd-YTYA?pwdjauj 提取码:jauj 1 中断系统 1.1 中断的概念 中断系统的定义:中断是指在主程序运行过程中,出现了特定的中断触发条件…...
力扣第40天----第121题、第122题
# 力扣第40天----第121题、第122题 文章目录 一、第121题--买卖股票的最佳时机二、第122题--买卖股票的最佳时机II 一、第121题–买卖股票的最佳时机 分2种情况考虑,根据持有股票、不持有股票这2种情况,完成递推公式。另外,这里要求只买卖…...
Flask 使用 JWT(二)
在 Python 使用 JWT 主要的方案是 PyJWT 工具。 安装与基本使用 可以使用 pip 安装 PyJWT: $ pip install pyjwt编码与解码 编码函数 def encode( self, payload: Dict[str, Any], # payload 参数 key: str, …...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
