--杂项2--

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

#include <iostream>
#include <string.h>
using namespace std;template <typename T>
class Stack {
private:T* a;int top;int size1;public:Stack(int c) : a(new T[c]), top(-1), size1(c) {}~Stack() { delete[] a; }T front() const {if (empty()) {throw out_of_range("Stack is empty");}return a[top];}T back() const {if (empty()) {throw out_of_range("Stack is empty");}return a[0];}bool empty() const {return top == -1;}int size() const {return top + 1;}void push(const T& e) {if (top == size1 - 1) {throw overflow_error("Stack is full");}a[++top] = e;}void pop() {if (empty()) {throw underflow_error("Stack underflow");}--top;}void Swap(int n, int m) {if (n < 1 || n > size() || m < 1 || m > size()) {throw out_of_range("Invalid indices for swap");}swap(a[n-1], a[m-1]);}void print() const {cout << "Stack: ";for (int i = top; i >= 0; --i) {cout << a[i] << " ";}cout << std::endl;}
};int main() {try {Stack<int> s1(15);cout << "Is empty: " << (s1.empty() ? "Yes" : "No") << endl;s1.push(5);s1.push(2);s1.push(9);s1.push(1);s1.print();cout << "Size: " << s1.size() << endl;cout << "Front: " << s1.front() << endl;cout << "Back: " << s1.back() <<endl;s1.pop();cout << "After pop: ";s1.print();s1.Swap(1, 3);cout << "After swap(1,3): ";s1.print();// 测试其他类型Stack<string> s2(5);s2.push("World");s2.push("Hello");s2.print();}catch (const exception& e) {cerr << "Error: " << e.what() << endl;}return 0;
}

#include <iostream>
#include <string.h>
using namespace std;
template <typename T>
class Queue {
private:T* a;int cap;int size1;int front1;int rear;public:Queue(int c) : a(new T[c]), cap(c), size1(0), front1(0), rear(-1) {}~Queue() { delete[] a; }T front() const {if (empty()) {throw out_of_range("Queue is empty");}return a[front1];}T back() const {if (empty()) {throw out_of_range("Queue is empty");}return a[rear];}bool empty() const {return size1 == 0;}bool full() const {return size1 == cap;}int size() const {return size1;}void push(const T& e) {if (full()) {throw std::overflow_error("Queue is full");}rear = (rear + 1) % cap;a[rear] = e;size1++;}T pop() {if (empty()) {throw std::underflow_error("Queue is empty");}T e = a[front1];front1 = (front1 + 1) % cap;size1--;return e;}void print() const {if (empty()) {cout << "Queue is empty" <<endl;return;}cout << "Queue: ";int count = 0;int index = front1;while (count < size1) {cout << a[index] << " ";index = (index + 1) % cap;count++;}cout << endl;}
};int main() {try {Queue<int> q1(5);cout << "Is empty: " << (q1.empty() ? "Yes" : "No") <<endl;q1.push(5);q1.push(2);q1.push(9);q1.push(1);q1.print();cout << "Size: " << q1.size() << endl;cout << "Front: " << q1.front() << endl;cout << "Back: " << q1.back() << endl;q1.pop();cout << "After pop: ";q1.print();// 测试其他类型Queue<string> q2(3);q2.push("Hello");q2.push("World");q2.print();// 测试异常q2.push("!");try {q2.push("Overflow");} catch (const std::exception& e) {cout << "Caught exception: " << e.what() << endl;}}catch (const std::exception& e) {cerr << "Error: " << e.what() << endl;}return 0;
}

手动将unique_ptr类功能实现出来

template <typename T,typename D=default_delete<T>>
class unique_ptr
{
private:T * ptr;
public:explicit unique_ptr(T*p=nullptr):ptr(p){}~unique_ptr()noexcept{};T& operator *()const{return *ptr;}T* operator->()const{return ptr;}unique_ptr(const unique_ptr &)=delete;unique_ptr& operator=(const unique_ptr &)=delete;unique_ptr(unique_ptr && other) noexcept:ptr(other.ptr){other.ptr=nullptr;}unique_ptr& operator =(unique_ptr &&other)noexcept{if(this!=&other){reset(other.ptr);other.ptr=nullptr;}return *this;}T * get()const{return ptr;}
}

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

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

相关文章

【x**3专享#2】编译 uboot 和 kernel 的文件结构

虚拟机交叉编译环境配置及内核编译步骤说明书 请先查看前篇文章内容 1. 获取虚拟机 IP 地址 打开虚拟机终端&#xff0c;执行以下命令查看虚拟机 IP 地址&#xff1a;ifconfig或者ip addr记录 eth0 或 ens33 等网络接口的 inet 后面的 IP 地址 2. 使用 Xftp 连接虚拟机 打开…

ArcEngine C#二次开发图层处理:根据属性分割图层(Split)

需求&#xff1a;仅根据某一属性&#xff0c;分割图层&#xff0c;并以属性值命名图层名称保存。 众所周知&#xff0c;ArcGIS ArcToolbox中通过Split可以实现图形分割一个图层&#xff0c;以属性值命名图层&#xff0c;如下图所示。 本文仅仅依据属性值&#xff0c;将一个shp…

C++杂项

作业&#xff1a; 将之前实现的顺序表、栈、队列都更改成模板类 顺序表 #include <iostream>using namespace std;template<typename T>class SeqList { private:T *ptr;int size; //总长度int len 0; //当前顺序表实际长度public://初始…

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;使其能够在物理、虚…