栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++动态数组类的构成,并调用方法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++动态数组类的构成,并调用方法

定义一元素为整数的动态数组类,并在主函数中调用各个功能:

数据成员:指向元素首地址的指针(用于存储动态申请的数组空间)、当前数组的容量、当前元素的个数;

成员函数:

1.带参/无参构造函数(无参的动态申请10个元素空间并改变当前数组的容量、当前元素的个数值;带参的按参数处理);

2.在尾部增加一元素;

3.修改指定位置上的元素值;

4.查询指定数据的元素是否存在;

5.输出所有数组中的元素;

6.增加数组容量(动态申请新容量数组空间、将原来数组空间中的元素复制到新空间并修改当前数组的容量值,释放delete原来数组空间) ;

7.析构函数(释放动态申请的数组空间) ;

8.二分查询指定数据的元素并返回原始所处的位置(选作,首先在函数内定义一个结构体数组,临时存放当前元素值和位置。其次,使用sort函数对结构体数组排序,最后,利用二分(折半)查找方法找指定元素是否存在。存在,返回原始位置值。否则,返回-1。返回前释放结构体数组的空间)。

#include
using namespace std;

struct Array1
{
    int val;
    int index;//将动态数组用结构体保存,val为原始值,index为原始位置
};

class Array
{
    int *p;//地址指针
    int Size;//在动态数组的个数
    int Capacity;//动态数组容量
public:
    Array(int Capacity);//有参构造
    Array();//无参构造
    void add_last(int x);//在尾部增加一个数x
    void change_data(int index,int x);//修改index处的值为x
    void PrintAll();//打印所有元素
    int query(int x);//查询x是否存在于动态数组中,二分查找
    void AddCapacity(int Capacity);//将数组复制到新的空间,并增加数组容量
    ~Array();//析构函数
};

Array::Array(int x)
{
    this->Capacity=x;
    this->Size=0;
    this->p=new int[this->Capacity];
}

Array::Array()
{
    Capacity=10;
    this->Size=0;
    this->p=new int[this->Capacity];
}

void Array::add_last(int x)
{
    if(this->Size==this->Capacity)
    {
        return;
    }
    this->p[this->Size]=x;
    this->Size++;
}

void Array::change_data(int index,int x)
{
    this->p[index-1]=x;
}

 bool Map(struct Array1 a,struct Array1 b){
     if(a.valSize];
    for(int i=0;iSize;i++)
    {
        arr[i].index=i;arr[i].val=this->p[i];
    }
    sort(arr,arr+this->Size,Map);//按照数组值排序
    //二分查找
    int left=0;int right=this->Size-1;
    while(left<=right)
    {
        int middle=(left+right)/2;
        if(x==arr[middle].val) return arr[middle].index+1;
        if(x>arr[middle].val) left=middle+1;
        else right=middle-1;
    }return -1;
}

void Array::PrintAll()
{
    for(int i=0;iSize;i++)
    {
        cout<p[i]<<" ";
    }cout<Capacity+x);
    for(int i=0;iSize;i++)
    {
        b.p[i]=this->p[i];
    }
    this->p=b.p;
}

Array::~Array()
{
    delete []this->p;
}

int main()
{
    int n,x;
    cout<<"请输入数组容量:";
    cin>>n;
    Array a(n);
    cout<<"请输入"<>x;
        a.add_last(x);
    }
    cout<<"打印数组:"< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号