C++ 数组模板类的实现 DynamicArray
来源:互联网 发布:陪吃陪喝陪玩的软件 编辑:程序博客网 时间:2024/06/16 03:59
仅供参考,不准粘贴复制交作业,谢谢配合(要交的话,最起码稍微改改好不好!)
#include <iostream>
#include <string>
using namespace std;
class DynamicArray
{
public:
DynamicArray(int aSize=10)
{
elem=new int[m_isize];
m_ilength=0;
m_isize=10;
}
~DynamicArray()
{
delete []elem;
m_ilength=0;
m_isize=0;
}
DynamicArray(const DynamicArray &aRef)
{
m_ilength=aRef.m_ilength;
m_isize=aRef.m_isize;
if (aRef.elem)
{
elem=new int[m_isize];
for (int i=0;i<m_ilength;i++)
{
elem[i]=aRef.elem[i];
}
}
}
void assign(const DynamicArray &aRef)// 用一个动态数组的对象的值去修改另外一个对象
{
int *elemtent; //防止空间太大或太小
elemtent=new int[m_isize];
delete[]elem;
elem=elemtent;
while(aRef.elem)
(++*elem)=( ++ *aRef.elem );
m_ilength=aRef.m_ilength;
m_isize=aRef.m_isize;
}
void append(int aValue)//数组最后插入元素
{
if(m_ilength >= m_isize) //数据存储满
{
int * elemtent; //申请新空间
elemtent = new int[m_isize+10];
for(int i = 0;i < m_ilength;i++) //将原来数据转移到新空间
{
elemtent[i] = elem[i];
}
delete []elem; //销毁原来的空间
elem= elemtent; //指向新申请的空间
m_isize = m_isize + 10;
}
elem[m_ilength] = aValue;
m_ilength++;
}
bool remove(int aIndex) //删除下标为aIndex的数组元素
{
if(aIndex<0||aIndex>m_ilength)
return false;
for (int i=aIndex;i<m_ilength-1;i++)
elem[i]=elem[i+1];
m_ilength=m_ilength-1;
m_isize=m_isize;
return true ;
}
bool insert( int aIndex, int aVal )//在aIndex位置的元素后面插入新元素
{
if(aIndex<0||aIndex>=m_ilength)
return false;
if(m_ilength >= m_isize) //数据存储满
{
int *elemtent; //申请新空间
elemtent = new int[m_isize+10];
for(int i = 0;i < m_ilength;i++) //将原来数据转移到新空间
{
elemtent[i] = elem[i];
}
delete []elem; //销毁原来的空间
elem = elemtent; //指向新申请的空间
m_isize = m_isize + 10;
}
for(int i = m_ilength - 1; i > aIndex;i--) //循环前移
{
elem[i + 1] = elem[i];
}
elem[aIndex + 1] = aVal;
m_ilength++;
return true;
}
bool remove(int aIndex, int aValue) //从下标为aIndex的元素开始查找,删除所有值为aValue的元素
{
if(aIndex<0||aIndex>=m_ilength)
return false;
int j=0;
int i=aIndex;
for (i;elem[i];i++)
{
if(elem[i]==aValue)
elem[i]=elem[i+1];
j++;
}
m_ilength-=j;
m_isize=m_isize;
return true;
}
const int *begin() const //返回第一个数组元素的指针
{
return elem;
}
const int *end() const //返回最后一个元素的指针
{
return &elem[m_ilength-1];
}
int at(const int aIndex) const //返回下标为aIndex的数组元素
{
if(elem&&aIndex<m_ilength)
return elem[aIndex];
return 0;
}
void display()
{
while(elem)
{
cout<<elem;
elem++;
}
}
private:
int *elem;
int m_ilength; //数组中元素的个数
int m_isize; //数组的总长度
};
- C++ 数组模板类的实现 DynamicArray
- 数组类—DynamicArray
- 数据结构--数组类之DynamicArray类
- 【C++】数组类的定义(类模板)
- C++:简单的二维数组模板类
- C++ Builder中的System::DynamicArray动态数组
- 模板类 通用数组的实现
- 类模板的应用--用类模板实现动态数组
- C++primer 实现queue的模板类
- C++:栈(stack)的模板类实现
- 类模板实现数组排序
- 动态数组的Stack类模板的实现
- [c++]栈模板的实现
- Stack类模板的动态数组实现(基本功能)
- 模板容器类的实现一(基于动态数组)
- [c++]模板的类型推导--数组
- 有序数组的合并 c++模板实现
- 使用数组和模板实现的队列
- C语言冒泡排序法和函数stoi()数字字符串转化的问题
- friction就是走了会停下,必须一直按键才能一直走
- 通过TortoiseGit上传项目到GitHub
- NSDate,NSString,int 数据类型相互转换
- 在源Eclipse上安装Myeclipse插件
- C++ 数组模板类的实现 DynamicArray
- iOS中switch case语句里面不能定义对象,有语法错误,除非加一个花括号
- Linux下安装JDK-(rpm,yum)
- 2015年十大热门Android开源新项目
- 简单的WebView自适应并嵌套在ScrollView里
- spark job 独立的log4j配置方法
- scrollScreen
- 第一种类型界面
- Android 中的Handler机制的深入探究