在示例中,DynamicArray
类使用了一个底层的静态数组,而 push_back
方法用于向动态数组添加元素,根据需要扩展容量。 getSize
方法返回数组的当前大小,而 operator[]
用于访问指定索引的元素。在析构函数中释放了分配的内存。
这个示例只是一个简单的实现,用于演示动态数组的基本概念。在实际应用中,需要考虑更多的细节,如内存管理、异常处理、性能优化等。在C++标准库中,可以使用 std::vector
来获得一个更强大和高效的动态数组实现。
- #include
- #include
-
- class DynamicArray {
- public:
- DynamicArray() : data(nullptr), size(0), capacity(0) {}
-
- // 添加元素到动态数组
- void push_back(int value) {
- if (size == capacity) {
- // 如果当前大小已经达到容量上限,需要扩展容量
- int new_capacity = (capacity == 0) ? 1 : capacity * 2;
- int* new_data = new int[new_capacity];
-
- // 复制现有数据到新内存块
- for (int i = 0; i < size; ++i) {
- new_data[i] = data[i];
- }
-
- // 释放旧内存块
- delete[] data;
-
- // 更新指针和容量
- data = new_data;
- capacity = new_capacity;
- }
-
- // 在动态数组末尾添加元素
- data[size] = value;
- size++;
- }
-
- // 获取动态数组的大小
- int getSize() const {
- return size;
- }
-
- // 获取指定索引的元素
- int operator[](int index) const {
- if (index < 0 || index >= size) {
- throw std::out_of_range("Index out of range");
- }
- return data[index];
- }
-
- // 析构函数,释放内存
- ~DynamicArray() {
- delete[] data;
- }
-
- private:
- int* data; // 底层静态数组
- int size; // 当前大小
- int capacity; // 当前容量
- };
-
- int main() {
- DynamicArray arr;
-
- for (int i = 0; i < 10; ++i) {
- arr.push_back(i * 2);
- }
-
- std::cout << "Dynamic Array Size: " << arr.getSize() << std::endl;
-
- for (int i = 0; i < arr.getSize(); ++i) {
- std::cout << "Element at index " << i << ": " << arr[i] << std::endl;
- }
-
- return 0;
- }