一个自己实现的Vector(只能处理基本类型数据)
2024-09-06 23:46:23
一个自己实现的Vector(只能处理基本类型数据)
string 类型不行
bool char* int double float long long 等基本s类型可用
使用模板类实现。底层为数组实现。
dvector.h
#ifndef DVECTOR_H
#define DVECTOR_H
#pragma once
#include <iostream>
template <class T>
class dvector
{
public:
dvector();
~dvector();
bool push_back(T);
void show();
public:
T* p;
int len;
int real_len;
};
#endif // DVECTOR_H
- dvector.cpp
#include "dvector.h"
template <class T>
dvector<T>::dvector()
{
len=real_len =0;
p=nullptr;
}
template<class T>
dvector<T>::~dvector()
{
if(p!=nullptr)
{
delete []p;
p=nullptr;
}
}
template <class T>
void dvector<T>::show()
{
if(p!=nullptr)
{
for(int i=0;i<real_len;i++){
std::cout<<i<<"\t"<<*(p+i)<<std::endl;
}
std::cout<<"length="<<real_len<<std::endl;
}else {
std::cout<<"NNNNNNNNNNNNNNNNNNNNNNNNNNo thing"<<std::endl;
}
}
template<class T>
bool dvector<T>::push_back(T t){
if(p==nullptr)
{
//第一个为空说明只有一个元素
p=new T;
*p=t;
real_len=len=1;
}else {
//第一个不为空说明有多个元素,这时候链表就必须重新分配内存
//分配为数组形式
T *ptemp = new T[real_len+1];
for(int i=0;i<real_len;i++)
{
*(ptemp+i)=*(p+i);
}
*(ptemp+real_len)=t;
delete []p;
p=ptemp;
real_len+=1;
len+=1;
}
return true;
}
int main()
{
//测试基本类型
//string 会出错,因为string 不是基本类型,是一种类似 vector 的类模板,其内部的内存操作与基本类型不一样。
//1. int
dvector<int>* dv1=new dvector<int>;
dv1->push_back(12);
dv1->push_back(15);
dv1->push_back(1995);
dv1->push_back(200);
dv1->push_back(2);
dv1->push_back(1);
dv1->show();
//2. double
dvector<double>* dv2=new dvector<double>;
dv2->push_back(12.2);
dv2->push_back(15.3);
dv2->push_back(1995.0220);
dv2->push_back(200.1);
dv2->push_back(2.3);
dv2->push_back(1.9);
dv2->show();
//3. char*
dvector<char*>* dv3=new dvector<char*>;
dv3->push_back("nimei");
dv3->push_back("de");
dv3->push_back("垃圾");
dv3->push_back("95");
dv3->push_back("lalala");
dv3->push_back("45");
dv3->show();
return 0;
}
最新文章
- 数据表格 - DataGrid - 行编辑
- 泛函编程(3)-认识Scala和泛函编程
- docker网络基础配置
- 夺命雷公狗---DEDECMS----23dedecms修改内容页面展示的信息
- java 宠物商店代码
- ASP.NET中的状态保持(转载)
- php:兄弟连之面向对象版图形计算器2
- shell群发邮件脚本
- java中断
- 自建log4cxx.sln
- (十六)TableView常见属性
- 【手记】解决启动SQL Server Management Studio 17时报Cannot find one of more components...的问题
- MySql8.0+全新身份验证方式
- Ajax+setInterval定时异步刷新页面
- OO第一单元作业总结之初识面向对象
- 项目ITP(三) 玩玩 服务端 到 app端
- SpringBoot(四)thymeleaf+MyBatis+MySql
- Chapter3 复杂度分析(上):如何分析,统计算法的执行效率和资源消耗
- report源码分析——report_object和report_message
- python imaplib无痕取信的主要
热门文章
- cookie,session,localStorage和sessionStorage
- 吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用指数衰减的学习率
- STM32F103_外部RAM用作运存
- 在java的静态方法中访问类的实例成员
- lc 0228
- kafka中常用API的简单JAVA代码
- [运维] 如何访问虚拟机上的 Tomcat ?
- 设计模式课程 设计模式精讲 3-6 单一职责原则Coding
- git 修改分支 删除分支 新增分支
- 4 htmlCSS&;图像&;表格&;列表&;表单&;框架&;颜色