设计一个整型数组类,能够通过[]下标的形式访问数组的某个元素,如果越界输出错误提示。(pushback方法可以在数组的末尾增加数据,此时如果数组容量不足,能够自动扩容,确保正确保存数据。)用C++代码编写
时间: 2024-05-11 12:13:43 浏览: 64
```c
#include <stdio.h>
#include <stdlib.h>
#define INIT_SIZE 10 // 初始数组大小
#define INCREASE_SIZE 5 // 每次扩容的大小
typedef struct {
int *data; // 存储数据的指针
int size; // 数组大小
int capacity; // 数组容量
} Array;
// 初始化数组
void initArray(Array *arr) {
arr->data = (int *)malloc(INIT_SIZE * sizeof(int));
arr->size = 0;
arr->capacity = INIT_SIZE;
}
// 访问数组元素
int getArray(Array *arr, int index) {
if (index < 0 || index >= arr->size) {
printf("Error: Index out of range.\n");
return -1;
}
return arr->data[index];
}
// 增加元素
void pushback(Array *arr, int value) {
if (arr->size >= arr->capacity) {
arr->data = (int *)realloc(arr->data, (arr->capacity + INCREASE_SIZE) * sizeof(int));
arr->capacity += INCREASE_SIZE;
}
arr->data[arr->size++] = value;
}
// 释放数组空间
void freeArray(Array *arr) {
free(arr->data);
arr->data = NULL;
arr->size = 0;
arr->capacity = 0;
}
int main() {
Array arr;
initArray(&arr);
// 添加元素
for (int i = 0; i < 15; i++) {
pushback(&arr, i);
}
// 访问元素
for (int i = -1; i < 20; i++) {
printf("%d ", getArray(&arr, i));
}
freeArray(&arr);
return 0;
}
```
阅读全文