C++杂项

作业:

将之前实现的顺序表、栈、队列都更改成模板类

顺序表

#include <iostream>using namespace std;template<typename T>class SeqList
{
private:T *ptr;int size;             //总长度int len = 0;          //当前顺序表实际长度public://初始化void init(int n){this->ptr = new T[n];this->len = 0;this->size = n;}//判空bool empty(){return this->len == 0;}//判满bool full(){return this->len == this->size;}//尾插void push_back(T e){//判断是否满了if(this->full()){return ;}this->ptr[len++] = e;}//插入void insert(T index){//判断是否满了if(this->full()){return ;}int i,pos;cout << "pos>>";cin >> pos;for(i=this->len; i>=pos; i--){this->ptr[i] = this->ptr[i-1];}this->ptr[i] = index;this->len++;}//任意位置删除void del(int index){if(empty() == 1){return;}int i;for(i = index - 1; i < this->len; i++){this->ptr[i] = this->ptr[i+1];}this->len--;}//尾删void pop_back(int index){if(empty() == 1){return;}int i;for(i = 0; i < index; i++){this->ptr[this->len--] = 0;}}//求长度void my_size(){cout << "len = " << this->len <<endl;}//获取任意位置元素T & at(int index){static T num;num = this->ptr[index-1];return num;}//将顺序表进行排序void sort(bool flag){int i,j;if(flag){for(i = 0; i < this->len; i++){for(j = 0; j < this->len - 1- i;j++){if(this->ptr[j]>this->ptr[j+1]){T temp = this->ptr[j];this->ptr[j] = this->ptr[j+1];this->ptr[j+1] = temp;}}}}else{for(i = 0; i < this->len; i++){for(j = 0; j < this->len - 1- i;j++){if(this->ptr[j]<this->ptr[j+1]){T temp = this->ptr[j];this->ptr[j] = this->ptr[j+1];this->ptr[j+1] = temp;}}}}}//定义展示函数void show(){//判空if(empty() == 1){return;}for(int i=0; i<this->len; i++){cout<<this->ptr[i]<<" ";}cout<<endl;}
};
int main()
{SeqList<int> s1;           //实例化一个顺序表对象s1.init(10);s1.show();s1.insert(8);s1.insert(7);s1.insert(9);s1.insert(2);s1.show();cout<<s1.at(2)<<endl;s1.del(1);s1.show();return 0;
}

运行结果:

#include <iostream>using namespace std;template<typename T>
class Stack  //定义一个栈的模板类
{
private:T *ptr;   //栈int num;  //栈顶元素数int max;  //栈的空间初始大小
public:Stack():num(-1),max(20){ptr = new T[max];   //申请空间}Stack(int t,int m):num(t),max(m){ptr = new T[max];   //申请栈空间for(int i=0;i<num+1;i++){cout<<"input>>";cin>>ptr[i];}}~Stack(){delete [] ptr;}Stack(Stack &s):ptr(new T(*s.ptr)),num(s.num),max(s.max){}//栈顶元素访问T top(){return ptr[num];}//判空bool empty(){return num==-1;}//元素数int size(){return num+1;}//向栈顶插入元素void push(T n){//判满if(num==max-1){cout<<"full"<<endl;return;}++this->num;this->ptr[num] = n;}//删除栈顶元素void pop(){//判空if(empty()){return;}this->num--;}void show(){for(int i=0;i<num+1;i++){cout<<ptr[i]<<"  ";}cout<<endl;}
};
int main()
{Stack <string> s1(4,10);   //有参构造s1.show();s1.pop();s1.show();string buff;cout<<"push>>";cin>>buff;s1.push(buff);s1.show();cout<<s1.size()<<"  "<<s1.top()<<endl;return 0;
}

运行结果:

队列

#include <iostream>
#include <stack>
using namespace std;
//队列模板类
template<typename T>
class Queue
{
private:int max;      //队列最大容量int num;      //队列内元素数T *ptr;     //容器
public:Queue():max(20),num(0){ptr = new T[this->max];}~Queue(){delete [] ptr;           //释放空间}Queue(Queue &q):max(q.max),num(q.num),ptr(new T(*q.ptr)){}    //深拷贝T front(){if(empty()){cout<<"null"<<endl;T a;return a;}return ptr[0];}T back(){if(empty()){cout<<"null"<<endl;T a;return a;}return ptr[num-1];}bool empty(){return num==0;}int size(){return num;}void push(T n){//判满if(num>=max){cout<<"full"<<endl;return;}this->num++;this->ptr[num-1] = n;}void pop(){//判空if(empty()){cout<<"null"<<endl;return;}for(int i=0;i<this->num;i++){this->ptr[i]=this->ptr[i+1];}this->num--;}void show(){for(int i=0;i<num;i++){cout<<ptr[i]<<"  ";}cout<<endl;}
};
int main()
{Queue<string> q;//判空if(q.empty()){q.push("hello");q.push("world");q.push("I");q.push("love");q.push("china");q.show();}cout<<q.back()<<endl;cout<<q.front()<<endl;cout<<q.size()<<endl;q.pop();q.show();return 0;
}

运行结果:

知识梳理:

C++11新特性之智能指针(重要)

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

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

相关文章

Unity八股总结

这里写目录标题 OnEnable、Awake、Start运行时的发生顺序&#xff1f;哪些可能在同一个对象周期中反复的发生&#xff1f;动态加载资源的方式?Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期&#xff0c;请列出系统自带的几个重要的方法。物理更新一般放在哪个系统函数里…

征程 6E/M 快速上手实战 Sample-Camera

01 Camera 模块简述 本文档简单介绍 Camera 子系统软件架构、列出已支持的 Camera 模组&#xff0c;并提供相应的配置说明&#xff0c;同时引用 Sensor 点亮调试方法介绍一颗新模组接入的步骤&#xff0c;再按根据重要功能按专题介绍接入方案限制、EMB 接收等&#xff0c;并最…

Python :AVIF 图片与其他图片格式间的批量转换

图片格式 AVIF转换为常见的格式&#xff0c;比如 JPG 或 PNG。本文介绍如何使用 Pillow 库实现AVIF与其他格式的相互转换。 环境配置 使用 Python 环境管理工具 conda 和常用库 Pillow 来处理图片格式转换。环境的详细信息&#xff1a; Conda: 24.7.1Python: 3.8.19Pillow: 10…

【中级通信工程师】终端与业务(十):通信市场营销组合策略

【零基础3天通关中级通信工程师】 终端与业务(十)&#xff1a;通信市场营销组合策略 本文是中级通信工程师考试《终端与业务》科目第十章《通信市场营销组合策略》的复习资料和真题汇总。本章的核心内容涵盖了市场营销组合策略的特点、产品策略、价格策略、渠道策略和促销策略…

【中级通信工程师】终端与业务(十一):市场营销计划、实施与控制

【零基础3天通关中级通信工程师】 终端与业务(十一)&#xff1a;市场营销计划、实施与控制 本文是中级通信工程师考试《终端与业务》科目第十一章《市场营销计划、实施与控制》的复习资料和真题汇总。本章的核心内容涵盖了市场营销计划的编制、实施过程以及控制方式&#xff0…

“牛市“是要来了吗?股市热潮“挤爆“上交所,系统也懵了!

今天&#xff0c;这股市的火爆程度简直了&#xff01;A股牛气冲天&#xff0c;直接把上交所的交易系统都给“挤爆”了&#xff0c;9月27号上午&#xff0c;网上炸开了锅&#xff0c;说上交所的交易系统居然卡壳了&#xff0c;买卖股票都成了难题&#xff0c;撤单也撤不掉。 网友…

周销量超BBA,稳居新势力榜首,理想汽车企稳发展新阶段

撰稿 | 多客 来源 | 贝多财经 理想汽车&#xff0c;离自己的理想又进了一步。 根据最新公布的2024年第38周&#xff08;9月16日至22日&#xff09;的中国汽车市场数据&#xff0c;理想汽车&#xff08;NASDAQ:LI、HK:02015&#xff09;的周销量继续领跑新势力品牌&#xff0…

每日论文6—16ISCAS一种新型低电流失配和变化电流转向电荷泵

《A Novel Current Steering Charge Pump with Low Current Mismatch and Variation》16ISCAS 本文首先介绍了传统的current steering charge pump&#xff0c;如下图&#xff1a; 比起最简单的电荷泵&#xff0c;主要好处是UP和DN开关离输出节点较远&#xff0c;因此一定程度…

【Java异常】(简简单单拿捏)

【Java异常】&#xff08;简简单单拿捏&#xff09; 1. 异常的简单介绍2. 异常的抛出2.1 语法 3. 异常的处理3.1 异常声明throws3.2 try-catch捕获并处理 4. 例子&#xff08;try-catch自定义异常&#xff09; 1. 异常的简单介绍 程序员在运行代码时会遇到很多异常&#xff0c…

T8:猫狗识别

T8周&#xff1a;猫狗识别 **一、前期工作**1.设置GPU,导入库2.导入数据3.查看数据 **二、数据预处理**1.加载数据2.可视化数据3.配置数据集 **三、构建CNN网络模型****四、编译模型****五、训练模型****六、模型评估****七、预测**八、总结1、[train_on_batch 和 test_on_batc…

ICAS英格尔认证闪耀2024汽车供应链降碳峰会,引领行业绿色发展新潮流

在推动全球绿色发展的大潮中&#xff0c;汽车供应链的降碳和可持续发展成为了行业内的热点议题。在这个关键时刻&#xff0c;《2024中国汽车供应链降碳和可持续国际峰会》在上海隆重举行&#xff0c;吸引了众多行业领袖和专家的目光。作为认证领域的佼佼者&#xff0c;ICAS英格…

THREE.JS法线Shader

以普通情况而论 vNormal normal;//...gl_FragColor vec4( vNormal, 1. );vNormal normal;//...gl_FragColor vec4( normalize( vNormal ) * 0.5 0.5, 1. );vNormal normalMatrix * normal;//...gl_FragColor vec4( normalize( vNormal ) * 0.5 0.5, 1. );normalMa…

从 0 到 1:互联网产品经理核心技能全解析

在互联网的浩瀚海洋中&#xff0c;产品经理如同领航员&#xff0c;决定着产品从无到有的走向和命运。从 0 到 1 打造一款互联网产品&#xff0c;需要产品经理具备多方面的核心技能。今天&#xff0c;我们就来详细解读这些关键能力。 一、洞察市场趋势 时刻关注行业动态 互联网…

征程6 上基于 DEB 工具实现包管理

1.引言 在开发、调测过程中&#xff0c;开发人员需要将系统软件、应用软件部署到 Soc 板端&#xff0c;以用于运行调试。传统的部署方式是通过解压复制或者调用部署脚本。这样的部署方式需要有着方式不统一、维护投入大的缺点。 在 linux 系统上&#xff0c;大多采用包管理的…

前端学习笔记-JS进阶篇-01

作用域&解构&箭头函数 1、作用域 作用域&#xff08;scope&#xff09;规定了变量能够被访问的“范围”&#xff0c;离开了这个“范围”变量便不能被访问 1.1、局部作用域 局部作用域分为函数作用域和块作用域 1.1.1、函数作用域 在函数内部声明的变量只能在函数…

PSO粒子群代码手搓实现—代码详解版python

PSO粒子群算法手搓实现版&#x1f680; 读了博士之后&#xff0c;送算法方向转到了控制方向&#xff0c;然后最近接触到的项目&#xff0c;要用到粒子群算法&#xff0c;然后秉持着我自己一贯的把基础代码自己手写一遍的原则&#xff0c;我自己上网找了一些视频&#xff0c;然后…

大型模型智能体:最先进的合作范式、安全与隐私以及未来趋势

摘要—大型模型智能体&#xff08;LM agents&#xff09;&#xff0c;由如 GPT-4 和 DALL-E 2 等大型基础模型驱动&#xff0c;代表了实现人工通用智能&#xff08;AGI&#xff09;的重要一步。LM 智能体展示了自主性、具身性和连接性等关键特征&#xff0c;使其能够在物理、虚…

大豆重测序-文献精读53

Natural variation in GmSW17 controls seed size in soybean GmSW17的自然变异控制大豆种子的大小 摘要 种子大小/重量在决定作物产量中起着重要作用&#xff0c;但在大豆中&#xff0c;仅有少数控制种子大小的基因被鉴定出来。在本研究中&#xff0c;我们进行了全基因组关联…

人工智能中的RAG、Agent与Agentic RAG各有什么作用?

人工智能技术的迅猛发展正催生着各行业的变革与创新浪潮。在此背景下&#xff0c;检索增强生成&#xff08;RAG&#xff09;、人工智能代理&#xff08;Agent&#xff09;&#xff0c;以及两者结合形成的新理念Agentic RAG成为了关注的热点。本文将详细探讨这三项技术的概念、原…

产销皆下行,造势口碑遭“反噬”,魏建军能否重振长城汽车?

今年以来&#xff0c;长城汽车可谓多次被打在舆论聚光灯下&#xff0c;既有“一把手”魏建军一反此前低调务实作风而在今年多次于公共场合慨慷激昂频出“金句”宏观层面的&#xff1b;也有旗下多款车型销量数据出现下滑的微观层面。 近日&#xff0c;长城汽车披露了2024年1-8月…