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
点滴