当前位置: 首页 > news >正文

day47:C++ day7,异常处理、using的第三种用法、类型转换、lambda表达式、STL标准模板库

my_vectoers.h:

#ifndef MY_VECTORS_H
#define MY_VECTORS_H
#include <iostream>using namespace std;template<typename TYPE>
class my_vectors
{
private:TYPE* ptr;int num;int cnum;TYPE* start_ptr=NULL;TYPE* end_ptr=NULL;
public://无参构造my_vectors(){};//有参构造my_vectors(int num,const TYPE &val1);//拷贝构造my_vectors(const my_vectors &L);//拷贝构造2my_vectors(TYPE* start,TYPE* end);//=运算符重载bool operator=(const my_vectors &L);//>运算符重载bool operator>(const my_vectors &L);//[]运算符重载TYPE & operator[](int index);//assign函数1void assign(TYPE* start,TYPE* end);//assign函数2void assign( int num, const TYPE &val2 );//at函数TYPE at( int pos );//back函数TYPE back();//伪begin函数TYPE* begin();//capacity 函数int capacity();//clear 函数void clear();//empty 函数bool empty();//full 函数bool full();//伪end函数TYPE* end();//front函数TYPE front();//insert函数1TYPE* insert( int loc, const TYPE &val );//insert函数2void insert( int loc, int num, const TYPE &val );//insert函数3void insert( int loc, TYPE* start, TYPE* end );//max_size 函数int max_size();//pop_back函数void pop_back();//push_back 函数void push_back( const TYPE &val );//伪rbegin 函数TYPE* rbegin();//伪rend 函数TYPE* rend();//resize 函数void resize( int size, TYPE val );//size 函数int size();//swap 函数void swap( my_vectors &from );//三杯水void swap(TYPE &a,TYPE &b);
};#endif // MY_VECTORS_H

my_vector.cpp:

#include "my_vectors.h"//有参构造
template<typename TYPE>
my_vectors<TYPE>::my_vectors(int num,const TYPE &val1)
{this->num=num;cnum=num;ptr=new TYPE(num);for(int i=0;i<num;i++){ptr[i]=val1;}start_ptr=ptr;end_ptr=ptr+num-1;
}//拷贝构造
template<typename TYPE>
my_vectors<TYPE>::my_vectors(const my_vectors &L)
{this->num=L.num;cnum=num;ptr=new TYPE(L.num);memcpy(this,&L);start_ptr=ptr;end_ptr=ptr+num-1;
}//拷贝构造2
template<typename TYPE>
my_vectors<TYPE>::my_vectors(TYPE* start,TYPE* end)
{num=(end-start)/sizeof(TYPE);cnum=num;ptr=new TYPE(num);memcpy(ptr,start,sizeof(TYPE)*num);start_ptr=ptr;end_ptr=ptr+num-1;
}//=运算符重载
template<typename TYPE>
bool my_vectors<TYPE>::operator=(const my_vectors &L)
{if(num == L.num && memcmp(ptr,L.ptr,sizeof(num)) == 0){return true;}return false;
}//>运算符重载
template<typename TYPE>
bool my_vectors<TYPE>::operator>(const my_vectors &L)
{if(num > L.num){return true;}else if(num == L.num && memcmp(ptr,L.ptr,sizeof(num)) > 0){return true;}else{return false;}
}//[]运算符重载
template<typename TYPE>
TYPE &my_vectors<TYPE>::operator[](int index)
{return *(ptr+index);
}//assign函数1
template<typename TYPE>
void my_vectors<TYPE>::assign(TYPE* start,TYPE* end)
{delete []ptr;num=(end-start)/sizeof(TYPE);cnum=num;ptr=new TYPE(num);memcpy(ptr,start,sizeof(TYPE)*num);start_ptr=ptr;end_ptr=ptr+num-1;
}//assign函数2
template<typename TYPE>
void my_vectors<TYPE>::assign( int num, const TYPE &val2 )
{delete []ptr;this->num=num;cnum=num;ptr=new TYPE(num);for(int i=0;i<num;i++){ptr[i]=val2;}start_ptr=ptr;end_ptr=ptr+num-1;
}//at函数
template<typename TYPE>
TYPE my_vectors<TYPE>::at( int pos )
{return ptr[pos];
}//back函数
template<typename TYPE>
TYPE my_vectors<TYPE>::back()
{return end_ptr;
}//伪begin函数
template<typename TYPE>
TYPE* my_vectors<TYPE>::begin()
{return start_ptr;
}//capacity 函数
template<typename TYPE>
int my_vectors<TYPE>::capacity()
{return cnum;
}//clear 函数
template<typename TYPE>
void my_vectors<TYPE>::clear()
{while(!empty()){pop_back();}
}//empty 函数
template<typename TYPE>
bool my_vectors<TYPE>::empty()
{return start_ptr==end_ptr==NULL;
}//full 函数
template<typename TYPE>
bool my_vectors<TYPE>::full()
{return ((end_ptr-start_ptr)/sizeof(TYPE))==num;
}//伪end函数
template<typename TYPE>
TYPE* my_vectors<TYPE>::end()
{return end_ptr;
}//front函数
template<typename TYPE>
TYPE my_vectors<TYPE>::front()
{return &ptr[0];
}//insert函数1
template<typename TYPE>
TYPE* my_vectors<TYPE>::insert( int loc, const TYPE &val )
{if(full()){cnum*=2;TYPE s[num];memcpy(s,this,sizeof(TYPE)*num);delete []ptr;ptr=new TYPE(cnum);memcpy(ptr,s,sizeof(TYPE)*num);}for(int i=ptr+num+1;i>=ptr+loc-1;i--){*(ptr+i)=*(ptr+i-1);}*(ptr+loc-1)=val;num++;return ptr+loc-1;
}//insert函数2
template<typename TYPE>
void my_vectors<TYPE>::insert( int loc, int num, const TYPE &val )
{if(full()){while(cnum<this->num+num){cnum*=2;}TYPE s[num];memcpy(s,this,sizeof(TYPE)*num);delete []ptr;ptr=new TYPE(cnum);memcpy(ptr,s,sizeof(TYPE)*num);}for(int i=loc-1;i<loc+num;i++){*ptr[i]=val;}num++;
}//insert函数3
template<typename TYPE>
void my_vectors<TYPE>::insert( int loc, TYPE* start, TYPE* end )
{int size=(end-start)/sizeof(TYPE);if(full()){while(cnum<this->num+size){cnum*=2;}TYPE s[num];memcpy(s,this,sizeof(TYPE)*num);delete []ptr;ptr=new TYPE(cnum);memcpy(ptr,s,sizeof(TYPE)*num);}TYPE s1[num];memcpy(s1,ptr+loc-1,sizeof(TYPE)*(num-loc));memcpy(ptr+loc-1,start,sizeof(TYPE)*size);memcpy(ptr+loc-1+size,s1,sizeof(TYPE)*(num-loc));num++;
}//max_size 函数
template<typename TYPE>
int my_vectors<TYPE>::max_size()
{return cnum;
}//pop_back函数
template<typename TYPE>
void my_vectors<TYPE>::pop_back()
{*end_ptr=ptr[num-1];num--;
}//push_back 函数
template<typename TYPE>
void my_vectors<TYPE>::push_back( const TYPE &val )
{if(full()){cnum*=2;TYPE s[num];memcpy(s,this,sizeof(TYPE)*num);delete []ptr;ptr=new TYPE(cnum);memcpy(ptr,s,sizeof(TYPE)*num);}*(ptr+num)=val;
}//伪rbegin 函数
template<typename TYPE>
TYPE* my_vectors<TYPE>::rbegin()
{return end_ptr;
}//伪rend 函数
template<typename TYPE>
TYPE* my_vectors<TYPE>::rend()
{return start_ptr;
}//resize 函数
template<typename TYPE>
void my_vectors<TYPE>::resize( int size, TYPE val )
{delete[] ptr;ptr=new TYPE(size);num=size;cnum=size;for(int i=0;i<size;i++){*(ptr+i)=val;}start_ptr=ptr;end_ptr=ptr+size-1;
}//size 函数
template<typename TYPE>
int my_vectors<TYPE>::size()
{return num;
}//swap 函数
template<typename TYPE>
void my_vectors<TYPE>::swap( my_vectors &from )
{swap(this->ptr,from.ptr);swap(this->num,from.num);swap(this->cnum,from.cnum);swap(this->start_ptr,from.start_ptr);swap(this->end_ptr,from.end_ptr);
}//三杯水
template<typename TYPE>
void my_vectors<TYPE>::swap(TYPE &a,TYPE &b)
{TYPE temp;temp=a;a=b;b=temp;
}

思维导图:有道云笔记

相关文章:

day47:C++ day7,异常处理、using的第三种用法、类型转换、lambda表达式、STL标准模板库

my_vectoers.h: #ifndef MY_VECTORS_H #define MY_VECTORS_H #include <iostream>using namespace std;template<typename TYPE> class my_vectors { private:TYPE* ptr;int num;int cnum;TYPE* start_ptrNULL;TYPE* end_ptrNULL; public://无参构造my_vectors(){…...

function—— Verilog的函数

文章目录 前言function写法语法举例说明调用 前言 function用法说明。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 function写法 function的标准写法如下&#xff1a; function <返回值的类型或范围>(函数名);<端口说明语句> // in…...

runtime过程中,常见jar问题解决

io.netty java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.<init>此类问题报错&#xff0c;主要是io.netty 多个jar 冲突导致。、 使用以下命令查看同一个jar 有哪些版本 mvn dependency:resolve -Dclassifiersources对一些不愿意引入的依赖加上…...

ElementPlus· banner轮播图实现

功能&#xff0c;①通用型&#xff0c;三方组件完成&#xff08;如&#xff0c;elementPlus&#xff09; ②自己写 轮播图 本文使用vue3中的UI框架——elementPlus——三方组件中的 <el-carousel> 实现轮播图 // 组件静态模板 <template><div class"hom…...

Linux自动化构建项目工具——Makefile/makefile

目录 一&#xff0c;背景知识 二&#xff0c;makefile/Makefile的编写 1.创建makefile/Makefile文件 2.在Makefile文件里写编译代码 3.伪目标——.PHONY 1.伪目标的特点 2.怎样实现总是被执行 4.Makefile/makefile文件的不同编写风格 1.背景知识 2.改写 一&#xff0c;背…...

第11章 字符串和字符串函数

本章介绍以下内容&#xff1a; 函数&#xff1a;gets()、gets_s()、fgets()、puts()、fputs()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy()、sprintf()、strchr() 创建并使用字符串 使用C库中的字符和字符串函数&#xff0c;并创建自定义的字符串函数 使用…...

TypeScript项目配置

前言 我们需要建立tsconfig.json 作用 用于标识 TypeScript 项目的根路径&#xff1b; 用于配置 TypeScript 编译器&#xff1b; 用于指定编译的文件。 重要字段 files - 设置要编译的文件的名称&#xff1b; include - 设置需要进行编译的文件&#xff0c;支持…...

【Spring面试】二、BeanFactory与IoC容器的加载

文章目录 Q1、BeanFactory的作用是什么&#xff1f;Q2、BeanDefinition的作用是什么&#xff1f;Q3、BeanFactory和ApplicationContext有什么区别&#xff1f;Q4、BeanFactory和FactoryBean有什么区别&#xff1f;Q5、说下Spring IoC容器的加载过程&#xff08;※&#xff09;Q…...

Android嵌套事务

这时候旋转设备还是会重置秒表。旋转设备时Android会重新创建活动。如果你的活动包含一个 < fragment >元素&#xff0c;每次重新创建活动时&#xff0c;它会重新插入片段的一个新版本。老片段被丢掉&#xff0c;所有实例变量会设置其初始值。在这个特定的例子中&#xf…...

如何让项目准时上线?

项目为什么容易延期&#xff1f; 1、软件研发是一项创造性工作 项目延期是一种普遍现象&#xff0c;管理者最为头疼的一个问题。但是外人并不理解。明明是你们自己做的计划&#xff0c;怎么总会出现这么多问题。说到底&#xff0c;这是由于我们的工作特性决定的。我们做的是一…...

ChatGPT 和 Elasticsearch:APM 工具、性能和成本分析

作者&#xff1a;LUCA WINTERGERST 在本博客中&#xff0c;我们将测试一个使用 OpenAI 的 Python 应用程序并分析其性能以及运行该应用程序的成本。 使用从应用程序收集的数据&#xff0c;我们还将展示如何将 LLMs 成到你的应用程序中。 在之前的博客文章中&#xff0c;我们构建…...

不使用辅助变量的前提下实现两个变量的交换

package operator; //不用第三个辅助变量&#xff0c;实现两个数的交换 public class Demo08 {public static void change(int a, int b){a ab;b a-b;a a-b;System.out.println(a);System.out.println(b);}public static void main(String[] args) {change(900,3000);} }后续…...

SV-DJS-i13电梯对讲网关

SV-DJS-i13电梯对讲网关 DJS-I13 是一款主要应用于电梯场景的对讲设备&#xff0c;可以将电梯原有模拟通话器的模拟信号转换成数字信号&#xff0c;不仅有稳定性好、电信级音质的优点&#xff0c;且完美兼容当下所有基于SIP的主流IPPBX/软交换/IMS平台,如Asterisk, Broadsoft,…...

论文解析-基因序列编码算法DeepSEA

论文解析-DeepSEA 参考亮点功能 方法数据集来源数据 实验评估评估DeepSEA预测染色质特征的性能评估DeepSEA在变异序列上的DHS预测性能数据集结果 参考 Zhou, J., Troyanskaya, O. Predicting effects of noncoding variants with deep learning–based sequence model. Nat Me…...

计组与操作系统

非科班出身的程序员&#xff0c;还是得补一下相关理论课程&#xff0c;最近看了下九曲阑干关于CSAPP的视频&#xff0c;学习了一下计算机组成原理&#xff0c;这里列一下相关知识点。 计算机组成原理&#xff1a; 数的表示与运算&#xff1a;CSAPP第二章 指令系统&#xff0…...

Pytorch中张量矩阵乘法函数(mm, bmm, matmul)使用说明,含高维张量实例及运行结果

Pytorch中张量矩阵乘法函数使用说明 1 torch.mm() 函数1.1 torch.mm() 函数定义及参数1.2 torch.bmm() 官方示例 2 torch.bmm() 函数2.1 torch.bmm() 函数定义及参数2.2 torch.bmm() 官方示例 3 torch.matmul() 函数3.1 torch.matmul() 函数定义及参数3.2 torch.matmul() 规则约…...

如何在matlab绘图的标题中添加变量?变量的格式化字符串输出浅析

文章目录 matlab的格式化输出控制符字段宽度、精度和对齐方式的控制matlab的格式化输出总结 matlab的格式化输出控制符 Matlab在画图的时候&#xff0c;采用title函数可以增加标题&#xff0c;该函数的输入是一个字符串&#xff0c;有时候我们想在字符串中添加一些变量&#x…...

Spring MVC 八 - 内置过滤器

SpringMVC内置如下过滤器&#xff1a; Form DataForwarded HeadersShallow ETagCORS Form Data 浏览器可以通过HTTP GET或HTTP POST提交form data&#xff08;表单数据&#xff09;&#xff0c;但是非浏览器客户端可以通过HTTP PUT、HTTP DELETE、HTTP PATCH提交表单数据。但…...

@Change监听事件与vue监听属性:watch的区别?

change 和 watch 是 Vue 中用于处理数据变化的两种不同方式。 1. change: - change 是一个事件监听器&#xff0c;用于监听特定DOM元素的变化事件&#xff0c;通常用于表单元素&#xff08;如输入框、下拉框等&#xff09;的值变化。 - 它在用户与表单元素交互并提交了变化时触…...

C++面试记录之中望软件

上次面试体验不好&#xff0c;记录了&#xff0c;这次同样记录一次体验不好的面试&#xff0c;中望软件…直接写了名字&#xff0c;因为真的很无语&#x1f613; 记录一下我不知道的问题 忘记录音了&#x1f622; 1. main函数之前做了什么&#xff1f; 我&#xff1a;实话我…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...