c++数组自动扩容(动态数组)

//函数包装在一个容器类里

//调用此函数可输入任意个整数(-1为退出条件可根据情况更改)(内存满足条件)

#ifndef dataRecoder_H
#define dataRecoder_H
#include<iostream>
using namespace std;
class dataContainer
{
public:
    dataContainer()
    {
        data[0]=0;//为数组自动填充一个数据,满足排序时哨兵的占用
        size++;
    }
    void dataIput()
    {
        int alength = length;//退出循环方法二用一个临时变量来记录当前的length
        for (int i = size; i < alength; i++)//第一种方法用length
        {
            int count = 0;//方法一定义局部的变量count记录是否自身调用,
            //录入数组
            int adata;
            cin >> adata;
            if (adata == -1)
            {
                break;
            }
            data[i] = adata;    
            size++;
            //判断与进行扩容
            if (size >= length)
            {
                int *temp = new int[length * 2];
                for (int j = 0; j < length; j++)
                {    
                    temp[j] = data[j];
                }
                delete[]data;
                data = temp;
                length = length * 2;
                //count++;//记录为调用,等下直接跳出for循环
                dataIput(); 
            }
            //lenth以变用count退出循环
            /*if (count>0)
            {
                break;
            }*/
        }
    }
    void print()
    {
        for (int i = 1; i < size; i++)
        {
            cout << data[i] << "  ";
        }
    }
    int * getData()
    {
        return data;
    }
    int getSize()
    {
        return size;
    }
private:    
    int length = 10;
    int  *data=new int[length];
    int size = 0;
};
#endif
点滴
原文地址:https://www.cnblogs.com/lst601z815/p/5034576.html