一个自己实现的Vector(只能处理基本类型数据)
一个自己实现的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;
}
一个自己实现的Vector(只能处理基本类型数据)的更多相关文章
- Spring @ResponseBody只能返回String类型数据解决办法
今天自己搭Spring MVC框架玩,使用AJAX调用Spring controller 并返回map对象,突然发现,哎,怎么@Response中只能返回String, 我用的Spring 3的版本也 ...
- 一个自己实现的Vector 完善版本
一个自己实现的Vector(只能处理基本类型数据) 转载自: https://www.ev0l.art/index.php/archives/22/ string 类型不行 bool char* in ...
- 新建一个用户,让他只能看到某一个视图(View),如何设置
新建一个用户,让他只能看到某一个视图(View),怎么设置? 新建一个用户,让他只能看到某一个视图(View),怎么设置? 如果做不到“只能看到指定视图”,最好能做到“对指定表或视图只有查询的权限”. ...
- vector作为函数返回类型
在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比 ...
- jquery easyui datagrid 多选只能获取一条数据
DataGrid属性: singleSelect ------如果为true,则只允许选择一行: idField ------- 指明哪一个字段是标识字段: 方法: 一:getSelections-- ...
- Android一个ListView列表之中插入两种不同的数据
http://www.cnblogs.com/roucheng/ Android一个ListView列表之中插入两种不同的数据 代码如下: public class ViewHolder{ Butto ...
- 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议
[源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...
- 一个自定义 HBase Filter -“通过RowKeys来高性能获取数据”
摘要: 大家在使用HBase和Solr搭建系统中经常遇到的一个问题就是:“我通过SOLR得到了RowKeys后,该怎样去HBase上取数据”.使用现有的Filter性能差劲,网上也没有现成的自定义Fi ...
- A站有一个页面需要PV统计 A站读写该数据 B站读该数据 需要数据同步
A站弄个缓存,并且开放出一个读取借口给B站 B站读取数据的时候,调用该接口和数据库内的数据累加,然后进行限时即可 ---------------------- 另外其他方法 session服务.mem ...
随机推荐
- ArrayList的底层实现原理
ArrayList源码分析 1.java.util.ArrayList<E> : List 接口的大小可变数组的实现类 ArrayList 内部基于 数组 存储 各个元素. 所谓大小可变数 ...
- N3K license安装
1.获取设备SN和PAK SN获取: Switch#show license host-id 注意:IOS设备中为:show license udi PAK获取: PAK是单独购买license后,c ...
- 使用类进行面向对象编程 Class 实例化 和 ES5实例化 对比,继承
ES5 写法 function Book(title, pages, isbn) { this.title = title; this.pages = pages; this.isbn = isbn; ...
- 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
使用方法: private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRuntime ...
- vector 踩过的坑
今天,做LeetCode上的一道题,198题:Rob House,在纸上画了画,发现了重复的结构,就使用了递归的方式实现的 #include<iostream> #include<v ...
- 《iOS开发实战 从入门到上架App Store(第2版)》书籍目录
第1章 开发准备 1.1 iOS 10新特性简述 1.1.1 新增触觉反馈编程接口 1.1.2 SiriKit框架的开放 1.1.3 引入Messages App 1.1.4 通知框架的整合与扩展 1 ...
- python中 yield 的用法 (简单、清晰)
首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂 ...
- ES5-json对象和字符串互转
JSON.stringify();和JSON.parse();是在ES5中提出并使用的:JSON.stringify();将一个对象转化为json字符串,JSON.parse();将一个对象转化为对象 ...
- mysql MVCC 实现原理
MVCC( Multi-Version Concurrency Controll) 每一行都存储了事件发生时的系统版本号(System Version Number),用来替代事件实际发生的时间.每一 ...
- pdf.js-----后端返回utf-8数据流,前端处理数据展示pdf
需求:做项目联调接口时,发现知识库展示pdf未果,经与后端人员沟通,发现以下问题: 1.接口返回的是utf-8数据流,但是前端调用的是base64解析方法: 导致功能有误: 方案一:将后端返回的utf ...