new申请空间,delete释放空间
#ifndef _CARRAY_H_
#define _CARRAY_H_
#include <iostream>
using namespace std;
class CArray {
int nMaxSize; //数组的大小
int nLength; //数组中实际存放的元素个数
int* data;
public:
CArray(int n = 100); //构造函数
CArray(const CArray& c); //拷贝构造函数
~CArray(); //析构函数
void put(int n); //将n加入到整形数组中
void printList(); //输出数组的所有元素
int get(int index); //取数组中第index个元素,index从0开始
void del(int index);//删除数组data中第index个元素,index从0开始
void insert(int x, int index);// 将x插入到数组data的第index位置,index从0开始
};
#endif
cpp
#include "array.h"
CArray::CArray(int n )
{
cout << "调用CArray构造函数" << endl;
nMaxSize = n;
nLength = 0;
data = new int[nMaxSize];
}
CArray::CArray(const CArray& c)
{
cout << "调用CArray拷贝构造函数" << endl;
nMaxSize = c.nMaxSize;
nLength = c.nLength;
data = new int[nMaxSize];
for (int i = 0; i < nLength; i++)
data[i] = c.data[i];
}
void CArray::put(int n) //将n加入到整形数组中
{
if (nLength < nMaxSize)
{
data[nLength++] = n;
}
else
cout << "数组已满,插入失败" << endl;
}
int CArray::get(int index) //取数组中第index个元素,index从0开始
{
if (index < nLength)
return data[index];
else {
cout << "index>=nLength,获取失败" << endl;
return INT_MIN; //越界返回大负数
}
}
void CArray::printList() //输出数组的所有元素
{
for (int i = 0; i < nLength; i++)
{
cout << data[i];
if ((i + 1) % 5 == 0)
cout << endl;
else
cout << " ";
}
cout << endl;
}
void CArray::del(int index)//删除数组data中第index个元素,index从0开始
{
if (index < nLength)
{
for (int i = index; i < nLength-1; i++)
data[i] = data[i + 1];
nLength--;
cout << "删除成功" << endl;
}
else
cout << "index >= nLength,删除失败" << endl;
}
void CArray::insert(int x, int index)// 将x插入到数组data的第index位置,index从0开始
{
if (index == nLength)
{
data[index] = x;
nLength++;
}
else if (index < nLength)
{
for (int i = nLength - 1; i >= index; i--)
data[i + 1] = data[i];
data[index] = x;
nLength++;
}
else
cout << "index > nLength,插入失败" << endl;
}
CArray::~CArray() { //析构函数
delete[] data;
data = 0; //指针置0
}
main函数
#include "array.h"
#include <iostream>
using namespace std;
int main()
{
int n, t;
int index = 0;
cout << "请输入元素个数:";
cin >> n;
CArray arr(n);
cout << "请输入" << n << "个数:" << endl;
for (int i = 0; i < n; i++)
{
cin >> t;
arr.put(t);
}
//打印
cout << "打印所有元素(5个1组):" << endl;
arr.printList();
CArray ca(arr); //拷贝构造函数
cout << "新CArray对象ca中的元素:" << endl;
ca.printList();
cout << "请输入要获取的元素下标:";
cin >> index;
int v = arr.get(index);
if (v != INT_MIN)
cout << "数据为:" << v << endl;
cout << "请输入要删除元素的下标:";
int indexdel;
cin >> indexdel;
arr.del(indexdel);
cout << "打印所有元素(5个1组):" << endl;
arr.printList();
int x, indexadd;
cout << "请输入需要插入的数据及下标:";
cin >> x >> indexadd;
arr.insert(x, indexadd);
cout << "插入后所有元素为:" << endl;
arr.printList();
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: