MyVector 的实现

myVector

#include <iostream>
#include <vector>int size2=0;using namespace std;template <typename type>
class myvector
{int size;type value;type *arr;public://无参构造myvector(){};//有参构造myvector(int s,type v):size(s),value(v){arr=new int[size];for(int i=0;i<size;i++){arr[i]=value;}}//拷贝构造myvector(const myvector&other):size(other.size),value(other.value){memcpy(this->arr,other.arr,size);}//析构函数~myvector(){delete [] arr;arr=nullptr;}//求容器的大小type my_capacity();//添加元素void my_push(const type & value);//展示元素void show();//求容器的真实大小type my_size();//访问容器中的元素type my_at(type local);//给容器中的元素赋值void my_assign(int size,const type &value);//返回起始位置的引用type my_front();//返回最后一个位置的引用type my_back();//返回起始元素的迭代器type *my_begin();//返回末尾下一个位置的迭代器type *my_end();//指定位置的插入type *my_insert(type local,const type &value);//清空容器中的元素void my_clear();//判空函数bool my_empty();};//求容器的大小
template <typename type>
type myvector<type>::my_capacity()
{return size;
}//添加元素
template <typename type>
void myvector<type>::my_push(const type & value)
{//将初始化的size赋值给size2if(size2==0){size2=size;}if(size2>=size){size2=size;size=size*2;  //二倍扩容}if(size2<=size){size2++;}arr[size2-1]=value;cout<<"添加成功"<<endl;
}//展示元素
template <typename type>
void myvector<type>::show()
{for(int i=0;i<size2;i++){cout<<arr[i]<<"\t";}cout<<endl;
}//求容器的真实大小
template <typename type>
type myvector<type>::my_size()
{int size3=size2;return size3;
}//访问容器中的元素
template <typename type>
type myvector<type>::my_at(type local)
{return arr[local];
}//给容器中的元素赋值
template <typename type>
void myvector<type>::my_assign(int num,const type &value)
{for(int i=num-1;i>=0;i--){arr[i]=value;}
}//返回起始位置的引用
template <typename type>
type myvector<type>::my_front()
{return arr[0];
}//返回最后一个位置的引用
template <typename type>
type myvector<type>::my_back()
{return arr[size2-1];
}//返回起始元素的迭代器
template <typename type>
type* myvector<type>::my_begin()
{type *ptr=arr;return ptr;
}//返回末尾下一个位置的迭代器
template <typename type>
type* myvector<type>::my_end()
{type *ptr1=(arr+size2-1);return ptr1;
}//指定位置的插入
template <typename type>
type *myvector<type>::my_insert(type local,const type &value)
{size2++;for(int i=size-1;i>=local;i--){arr[i+1]=arr[i];}//插入type *ptr2=(arr+local);*ptr2=value;return ptr2;
}//清空容器中的元素
template <typename type>
void myvector<type>::my_clear()
{size2=0;cout<<"清空成功"<<endl;
}//判空函数
template <typename type>
bool myvector<type>::my_empty()
{if(size2==0)return 1;elsereturn 0;
}int main()
{//初始化myvector<int> V1(5,7);//容器大小cout<<"容器大小为:"<<V1.my_capacity()<<endl;//添加元素V1.my_push(8);V1.my_push(8);V1.my_push(8);//展示元素V1.show();//真实大小cout<<"真实大小:"<<V1.my_size()<<endl;//访问容器中的元素cout<<V1.my_at(4)<<endl;//给容器中的元素赋值V1.my_assign(5,9);V1.show();//返回起始位置的引用cout<<"起始元素为:"<<V1.my_front()<<endl;//返回最后一个位置的引用cout<<"最后位置元素为:"<<V1.my_back()<<endl;;//返回起始元素的迭代器int *p;p=V1.my_begin();cout<<"起始元素为:"<<*p<<endl;//返回末尾下一个位置的迭代器int *p1;p1=V1.my_end();cout<<"最后位置元素为:"<<*p1<<endl;//指定位置的插入V1.my_insert(2,3);V1.show();//判空cout<<V1.my_empty()<<endl;;return 0;
}

2、思维导图

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

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

相关文章

laravel8框架-语言包的安装和配置

1, 查找 laravel框架语言包地址&#xff1a; \根目录\resources\lang\ 默认有个 en 语言包 2&#xff0c;下载 和 安装 下载地址&#xff1a;https://packagist.org/ 搜索 laravel/lang 参考网址&#xff1a;https://packagist.org/packages/overtrue/laravel-lang 选择你…

Django系列:Django简介与MTV架构体系概述

Django系列 Django简介与MTV架构体系概述 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/132890054 【介…

【数据结构】串的定义;存储结构;基本操作的实现

欢迎光~临~^_^ 目录 知识树 1、串的定义 2、串的存储结构 2.1顺序存储 静态存储 动态存储 2.2链式存储 2.3串的堆分配存储表示 3、串的基本操作 3.1求子串 3.2比较操作 3.3定位操作 4、C语言实现串的基本操作 知识树 1、串的定义 串是由零个或多个字符组成的…

记录一次IDEA非法字符‘\ufeff‘报错

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 报错以及Bug ✨特色专栏&#xff1a; …

JavaScript与jQuery(下篇)

JavaScript与jQuery笔记&#xff08;下篇&#xff09; 一、获取jquery二、jquery选择器三、jquery事件四、jquery操作Dom元素————————创作不易&#xff0c;如觉不错&#xff0c;随手点赞&#xff0c;关注&#xff0c;收藏(*&#xffe3;︶&#xffe3;)&#xff0c;谢…

Golang Gorm 创建HOOK

创建的时候&#xff0c;在插入数据之前&#xff0c;想要做一些事情。钩子函数比较简单&#xff0c;就是实现before create的一个方法。 package mainimport ("gorm.io/driver/mysql""gorm.io/gorm" )type Student struct {ID int64Name string gorm:&q…

UDP通信

UDP通信 1、UDP2、UDP通信流程 1、UDP /* udp传输层协议&#xff0c;和tcp是一样的 特点:面向无连接的&#xff0c;不安全的&#xff0c;报式传输协议1&#xff0e;无连接:ldp通信的时候不需要connect1) 通信不需要建立连接2) 如果想给对方发送数据&#xff0c;只需要指定对方…

CRC(循环冗余校验码的校验方法)

5个关键点&#xff1a; 1.信息码&#xff1a;即给出要校验的二进制码 2.生成多项式&#xff1a;一般多项式会给&#xff0c;从最高位的指数位数就可以得到有几个校验码&#xff1b;如果没给多项式&#xff0c;肯定会给个多项式二进制码&#xff0c;根据它来推就行&#xff08;…

华为GaussDB数据库

Gauss数据库初识_高斯数据库_ygpGoogle的博客-CSDN博客 Redhat 7.6安装GaussDB_100_1.0.1详细攻略_gaussdb_100_1.0.1-database-redhat-64bit.tar.gz dow_博德1999的博客-CSDN博客 https://www.ngui.cc/el/3381579.html?actiononClick 初识GaussDB——GaussDB的发展历程、部…

Java基础(二十四):MySQL

文章目录 一、数据库&#xff08;创建、显示、删除、备份、恢复&#xff09;二、MySQL常用数据类型2.1 数值型&#xff08;整数&#xff09;2.2 数值型&#xff08;二进制bit&#xff09;2.3 数值型&#xff08;小数&#xff09;2.4 字符型2.5 日期类型 三、表结构的操作四、表…

软件设计师-UML基础教程

场景 针对UML1.5各种模型图的构成和功能进行说明。 UML概述 UML简介 UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。 适用于描述以用例为驱动&#xff0c;以体系结构为中心的软件设计的全过程。 UML的定义包括UML语义和UML表…

【CVPR2021】MVDNet论文阅读分析与总结

Challenge&#xff1a; 现有的目标检测器主要融合激光雷达和相机&#xff0c;通常提供丰富和冗余的视觉信息 利用最先进的成像雷达&#xff0c;其分辨率比RadarNet和LiRaNet中使用的分辨率要细得多&#xff0c;提出了一种有效的深度后期融合方法来结合雷达和激光雷达信号。 MV…

输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)

效果视频&#xff1a;输电线路故障诊断&#xff08;Python代码&#xff0c;逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断&#xff09;_哔哩哔哩_bilibili 1.数据 仿真平台 仿真模型分别获取单相接地故障、两相接地故障、两相间短路故障、三相接地故障、…

2023年浦东新区数字化安全风险智慧管控技能比武初赛-技能题一

目录 二、技能题 2.1 MD5===MD5 三、业*&&&务**&&联&&&*&&系 二、技能题 2.1 MD5===MD5

线性代数的本质(九)——二次型与合同

文章目录 二次型与合同二次型与标准型二次型的分类度量矩阵与合同 二次型与合同 二次型与标准型 Grant&#xff1a;二次型研究的是二次曲面在不同基下的坐标变换 由解析几何的知识&#xff0c;我们了解到二次函数的一次项和常数项只是对函数图像进行平移&#xff0c;并不会改变…

day40 设计模式、jdk8新特性

一、代理模式 为其他对象提供一种代理控制此对象的访问 若一个对象不适合直接引用另一个对象&#xff0c; 代理对象在客户端和目标对象之间起到中介作用 组成&#xff1a; 抽象角色&#xff1a;通过接口 抽象类 真实角色实现了哪些方法 代理角色&#xff1a;实现抽象角色…

k8s集群中部署服务之部署描述文件准备

微服务部署描述文件Deploy.yaml 一、各微服务创建部署描述文件 1.1 mall-auth-server --- apiVersion: apps/v1 kind: Deployment metadata:name: mall-auth-servernamespace: sangomalllabels:app: mall-auth-server spec:replicas: 1selector:matchLabels:app: mall-auth-s…

Python用若干列的数据多条件筛选、去除Excel数据并批量绘制直方图

本文介绍基于Python&#xff0c;读取Excel数据&#xff0c;以一列数据的值为标准&#xff0c;对这一列数据处于指定范围的所有行&#xff0c;再用其他几列数据数值&#xff0c;加以筛选与剔除&#xff1b;同时&#xff0c;对筛选与剔除前、后的数据分别绘制若干直方图&#xff…

设置伙伴(buddy)-给窗口控件增加快捷键

在官方教程或者很多qt程序中经常看到能使用全键盘操作软件&#xff0c;那么QT creator也支持了这一特性&#xff0c;就是使用设置伙伴来实现的。 我们可以在设计界面按照如下几步实现&#xff1a; 先放置label 再放置一个lineEdit控件。 这个时候我们就可以开始伙伴绑定的步骤…

JVM 虚拟机 ----> Java 类加载机制

文章目录 JVM 虚拟机 ----> Java 类加载机制一、概述二、类的生命周期1、类加载过程&#xff08;Loading&#xff09;&#xff08;1&#xff09;加载&#xff08;2&#xff09;验证&#xff08;3&#xff09;准备&#xff08;4&#xff09;解析&#xff08;5&#xff09;初始…