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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM