回顾大二的数据结构知识。从数组开始。实现了一个可自动扩充容量的泛型数组。

头文件:Array.h
#ifndef Array_hpp
#define Array_hpp
template <class T>
class Array{
private:
T *base; //数组首地址
int length; //数组中元素
int size; //数组大小,以数组中元素的大小为单位
public:
//初始化数组,分配内存
bool init();
//检查内存是否够用,不够用就增加
bool ensureCapcity();
//添加元素到数组尾
bool add(T item);
//插入元素到数组的具体位置,位置从1开始
bool insert(int index,T item);
//删除指定位置的元素并返回,位置从1开始
T del(int index);
//返回指定位置的元素
T objectAt(int index);
//打印数组所有元素
void display();
};
#endif /* Array_hpp */
实现:Array.cpp
#include "Array.hpp"
#include <mm_malloc.h>
#include <iostream>
using namespace std;
template<typename T> bool Array<T>::init(){
base = (T *)malloc(10*sizeof(T));
if(!base){
return false;
}
size = 10;
length = 0;
return true;
}
template<typename T> bool Array<T>::ensureCapcity(){
if(length >= size){
T *newBase = (T*)realloc(base,10 * sizeof(T) + size);
if(!newBase){
return false;
}
base = newBase;
size += 10;
newBase = nullptr;
}
return true;
}
template<typename T> bool Array<T>::add(T item){
if(!ensureCapcity()){
return false;
}
T *p = base + length;
*p = item;
length ++;
return true;
}
template<typename T> bool Array<T>::insert(int index,const T item){
if(!ensureCapcity()){
return false;
}
if(index < 1 || index > length){
return false;
}
T *q = base + index - 1;
T *p = base + length - 1;
while( p >= q){
*(p+1) = *p;
p--;
}
*q = item;
q = nullptr;
p = nullptr;
length ++;
return true;
}
template<typename T>T Array<T>::del(int index){
if(index<1 || index > length){
return NULL;
}
T *q = base + index - 1;
T item = *q;
++q;
T *p = base + length;
while(q <= p){
*(q-1)=*q;
++q;
}
length --;
return item;
}
template<typename T>T Array<T>::objectAt(int index){
if(index<1 || index > length){
return NULL;
}
T *q = base;
return *(q + index - 1);
}
template <typename T>void Array<T>::display(){
T *q = base;
T *p = base +length - 1;
while (q<=p) {
cout << *(q++)<<" ";
}
cout << endl;
}
使用:
#include <iostream>
#include "Array.cpp"
using namespace std;
int main(int argc, const char * argv[]) {
Array<int> array = *new Array<int>;
array.init();
array.add(1);
array.insert(1,2);
array.objectAt(1);
return 0;
}
以上这篇动态数组C++实现方法(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# 动态数组的实现
# C++线性表深度解析之动态数组与单链表和栈及队列的实现
# C++ 动态数组模版类Vector实例详解
# C++ Vector 动态数组的实现
# C++实现动态数组功能
# c++创建二维动态数组与内存释放问题
# C/C++ 动态数组的创建的实例详解
# 浅谈C++内存分配及变长数组的动态分配
# C++动态数组类的封装实例
# C++详解如何实现动态数组
# 给大家
# 组中
# 数据结构
# 希望能
# 这篇
# 小编
# 大家多多
# 不够用
# 实现了
# 头文件
# int
# length
# base
# lt
# gt
# private
# array
# init
# ensureCapcity
# add
相关文章:
网站制作新手教程,新手建设一个网站需要注意些什么?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
Python lxml的etree和ElementTree有什么区别
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何用花生壳三步快速搭建专属网站?
移民网站制作流程,怎么看加拿大移民官网?
建站之星logo尺寸如何设置最合适?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
网站制作软件有哪些,制图软件有哪些?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何获取上海专业网站定制建站电话?
如何通过云梦建站系统实现SEO快速优化?
公司网站设计制作厂家,怎么创建自己的一个网站?
python的本地网站制作,如何创建本地站点?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何选择最佳自助建站系统?快速指南解析优劣
Python多线程使用规范_线程安全解析【教程】
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
建站之星微信建站一键生成小程序+多端营销系统
Java解压缩zip - 解压缩多个文件或文件夹实例
文字头像制作网站推荐软件,醒图能自动配文字吗?
如何通过网站建站时间优化SEO与用户体验?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何在服务器上三步完成建站并提升流量?
实现虚拟支付需哪些建站技术支撑?
Thinkphp 中 distinct 的用法解析
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何在Windows服务器上快速搭建网站?
,怎么用自己头像做动态表情包?
网页设计与网站制作内容,怎样注册网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
临沂网站制作公司有哪些,临沂第四中学官网?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何用低价快速搭建高质量网站?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何选择高性价比服务器搭建个人网站?
高防服务器租用指南:配置选择与快速部署攻略
模具网站制作流程,如何找模具客户?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
Android自定义控件实现温度旋转按钮效果
建站之星安装后如何配置SEO及设计样式?
微信推文制作网站有哪些,怎么做微信推文,急?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
如何快速搭建高效服务器建站系统?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
*请认真填写需求信息,我们会在24小时内与您取得联系。