设计一个整型数组类,能够通过[]下标的形式访问数组的某个元素,如果越界输出错误提示。(pushback方法可以在数组的末尾增加数据,此时如果数组容量不足,能够自动扩容,确保正确保存数据。)
时间: 2024-05-14 11:15:07 浏览: 51
C++实现基于静态数组的顺序表
5星 · 资源好评率100%
下面是一个示例实现:
```cpp
#include <iostream>
class IntArray {
public:
IntArray(int size = 0) {
m_size = size;
m_capacity = size;
m_data = new int[m_capacity];
}
~IntArray() {
delete[] m_data;
}
int size() const {
return m_size;
}
int capacity() const {
return m_capacity;
}
void pushback(int value) {
if (m_size == m_capacity) {
expand();
}
m_data[m_size++] = value;
}
int& operator[](int index) {
if (index < 0 || index >= m_size) {
std::cerr << "Error: index out of bounds." << std::endl;
exit(1);
}
return m_data[index];
}
private:
int* m_data;
int m_size;
int m_capacity;
void expand() {
m_capacity = m_capacity == 0 ? 1 : m_capacity * 2;
int* new_data = new int[m_capacity];
for (int i = 0; i < m_size; ++i) {
new_data[i] = m_data[i];
}
delete[] m_data;
m_data = new_data;
}
};
```
上述代码中,IntArray类封装了一个整型数组,其中m_data指向动态分配的数组空间,m_size记录了数组中元素的数量,m_capacity记录了数组容量。构造函数中首先为数组分配空间,如果没有指定大小,则默认为0。析构函数中释放动态分配的数组空间。size()和capacity()方法分别返回数组元素数量和数组容量。pushback()方法在数组末尾添加一个元素,如果数组容量不足,则调用expand()方法进行扩容。operator[]方法重载了[]下标操作符,可以通过下标访问数组元素,如果越界则输出错误信息并退出程序。expand()方法用于将数组容量扩大为原来的两倍。
阅读全文