一个自己实现的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;
}

最新文章

  1. 数据表格 - DataGrid - 行编辑
  2. 泛函编程(3)-认识Scala和泛函编程
  3. docker网络基础配置
  4. 夺命雷公狗---DEDECMS----23dedecms修改内容页面展示的信息
  5. java 宠物商店代码
  6. ASP.NET中的状态保持(转载)
  7. php:兄弟连之面向对象版图形计算器2
  8. shell群发邮件脚本
  9. java中断
  10. 自建log4cxx.sln
  11. (十六)TableView常见属性
  12. 【手记】解决启动SQL Server Management Studio 17时报Cannot find one of more components...的问题
  13. MySql8.0+全新身份验证方式
  14. Ajax+setInterval定时异步刷新页面
  15. OO第一单元作业总结之初识面向对象
  16. 项目ITP(三) 玩玩 服务端 到 app端
  17. SpringBoot(四)thymeleaf+MyBatis+MySql
  18. Chapter3 复杂度分析(上):如何分析,统计算法的执行效率和资源消耗
  19. report源码分析——report_object和report_message
  20. python imaplib无痕取信的主要

热门文章

  1. cookie,session,localStorage和sessionStorage
  2. 吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用指数衰减的学习率
  3. STM32F103_外部RAM用作运存
  4. 在java的静态方法中访问类的实例成员
  5. lc 0228
  6. kafka中常用API的简单JAVA代码
  7. [运维] 如何访问虚拟机上的 Tomcat ?
  8. 设计模式课程 设计模式精讲 3-6 单一职责原则Coding
  9. git 修改分支 删除分支 新增分支
  10. 4 htmlCSS&amp;图像&amp;表格&amp;列表&amp;表单&amp;框架&amp;颜色