编写c++代码完成本次实验的任务为采用模板技术设计动态数组类 DynamicArray,要求系统设计具有一定弹性和可扩展性,使得后续维护和扩展功能更容易,增加或修改系统功能变得 更简单。基本要求和功能如下: (1)数组元素可动态实例化为int、double、string、Point等。 (2)类模板成员包括:数组长度、元素个数、数据指针。 (3)通过构造函数创建数组,默认包含10个元素,通过析构函数释放数组数据。 (4)追加数组元素:void AddItems(T aData[], int aLen); 在数组末尾添加aLen个元素,注意如果数组长度不够,需要动态扩展。 (5)删除数据元素:bool RemoveAt(int index); 返回是否删除成功。 (6)插入数组元素 void InsertItem( int index, T aData); 在数组的第index的位置插入元素aData,注意如果数组长度不够,需要动态扩展。 (7)数组元素排序,void mySort(); (8)其它你能想到的功能。
时间: 2024-02-16 14:05:02 浏览: 80
好的,以下是C++代码实现:
```cpp
#include <iostream>
using namespace std;
template <typename T>
class DynamicArray {
private:
int arraySize; // 数组长度
int elementNum; // 元素个数
T* dataPtr; // 数据指针
public:
DynamicArray() {
arraySize = 10;
elementNum = 0;
dataPtr = new T[arraySize];
}
~DynamicArray() {
delete[] dataPtr;
}
void AddItems(T aData[], int aLen) {
if (elementNum + aLen > arraySize) {
T* tempPtr = new T[elementNum + aLen];
for (int i = 0; i < elementNum; i++) {
tempPtr[i] = dataPtr[i];
}
delete[] dataPtr;
dataPtr = tempPtr;
arraySize = elementNum + aLen;
}
for (int i = 0; i < aLen; i++) {
dataPtr[elementNum++] = aData[i];
}
}
bool RemoveAt(int index) {
if (index < 0 || index >= elementNum) {
return false;
}
for (int i = index + 1; i < elementNum; i++) {
dataPtr[i - 1] = dataPtr[i];
}
elementNum--;
return true;
}
void InsertItem(int index, T aData) {
if (index < 0 || index >= elementNum) {
return;
}
if (elementNum == arraySize) {
T* tempPtr = new T[elementNum * 2];
for (int i = 0; i < elementNum; i++) {
tempPtr[i] = dataPtr[i];
}
delete[] dataPtr;
dataPtr = tempPtr;
arraySize = elementNum * 2;
}
for (int i = elementNum - 1; i >= index; i--) {
dataPtr[i + 1] = dataPtr[i];
}
dataPtr[index] = aData;
elementNum++;
}
void mySort() {
for (int i = 0; i < elementNum - 1; i++) {
for (int j = i + 1; j < elementNum; j++) {
if (dataPtr[j] < dataPtr[i]) {
T temp = dataPtr[i];
dataPtr[i] = dataPtr[j];
dataPtr[j] = temp;
}
}
}
}
};
```
这里我们采用了模板技术,通过T来表示数组元素的类型,实现了动态数组类DynamicArray。注意其中AddItems、RemoveAt和InsertItem函数需要对数组进行动态扩展,这里采用了new和delete运算符来实现。mySort函数实现了对数组元素的排序。其他功能可以根据实际需求进行添加。
阅读全文