全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

动态数组C++实现方法(分享)

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

头文件: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小时内与您取得联系。