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 【介…

MATLAB算法实战应用案例精讲-【数模应用】NP-hard问题

目录 前言 几个高频面试题目 NP难问题和NP完全问题的区别 P问题、NP问题、NP完全

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

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

大二第二周总结

问题&#xff1a; 想到了之前追的辩论赛&#xff0c;主题是“被误解是表达者的宿命”&#xff0c; 反方认为被误解不是表达者的宿命&#xff1a; 由于表达者表意含混造成误解的可能性是人力可控的&#xff0c;表达者可在真诚沟通的基础之上&#xff0c;根据对方反应不断调整…

记录一次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…

生成元 rust解法

如果x加上x的各个数字之和得到y&#xff0c;就说x是y的生成元。给出n&#xff08;1≤n≤100000&#xff09;&#xff0c;求n的最小生成元。无解输出0。例如&#xff0c;n216&#xff0c;121&#xff0c;2005时的解分别为198&#xff0c;0&#xff0c;1979。 【分析】 本题看起来…

Python基本语法_集合setfrozenset_内建方法详解

集合是一种组合型的数据类型,分为可变的set和不可变的frozenset。 软件环境 系统 UbuntuKylin 14.04软件 Python 2.7.3IPython 4.0.0可变集合Set

UDP通信

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

使用键盘控制Franka机械臂运动

功能说明 使用键盘按键&#xff0c;可以控制franka机械臂7个关节角&#xff0c;已在真机上验证。 代码 主要使用的是官方包内的 franka_example_controllers 1、修改 include下的 joint_position_example_controller.h, 改为如下&#xff1a; // Copyright (c) 2017 Frank…

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

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

群体AI介绍

本文为介绍性文章&#xff0c;只是为了扩宽视野。 群体AI 1、简介 群体AI&#xff0c;也称为集体智能&#xff08;collective intelligence&#xff09;&#xff0c;是指通过联合多个智能体&#xff08;如人类、机器或其他智能系统&#xff09;的智能和资源来解决问题的一种方…

华为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 日期类型 三、表结构的操作四、表…

3.docker仓库(Nexus、Harbor)的安装

本文目录 前言1.Aliyun 镜像仓库2.Nexus1.Nexus 私服搭建2.登录控制台3.配置nexus仓库4.配置nexus仓库地址为安全的镜像地址5.镜像推送至nexus仓库6.拉取nexus仓库镜像3.Harbor1.Docker Compose 安装2.Harbor安装3.配置Harbor仓库地址为安全的镜像地址4.创建项目5.镜像推送至Ha…

将函数实现放到CPP报“无法解析的外部符号...”,系VS Bug

发现一个现象&#xff0c;就是项目中有一个类&#xff0c;如果将函数实现全部放到头文件中&#xff0c;编译不报错&#xff0c;如果将函数实现放到CPP中则始终提示“无法解析的外部符号...”&#xff0c;考虑到放到头文件中能正常编译运行&#xff0c;显然这里不符合“无法解析…

软件设计师-UML基础教程

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

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

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