自定义C++ Array类以支持高效插入与删除

发布时间:2024-07-19 13:00:06 作者:小樊
来源:亿速云 阅读:99

下面是一个自定义的C++ Array类,支持高效插入和删除操作:

#include <iostream>

class Array {
private:
    int* data; // 数组指针
    int size; // 数组大小
    int capacity; // 数组容量

public:
    // 构造函数
    Array(int initialCapacity = 10) {
        data = new int[initialCapacity];
        size = 0;
        capacity = initialCapacity;
    }

    // 析构函数
    ~Array() {
        delete[] data;
    }

    // 插入元素
    void insert(int element, int index) {
        if (index < 0 || index > size) {
            std::cout << "Invalid index" << std::endl;
            return;
        }

        // 如果数组已满,则扩容
        if (size == capacity) {
            int newCapacity = capacity * 2;
            int* newData = new int[newCapacity];
            for (int i = 0; i < size; i++) {
                newData[i] = data[i];
            }
            delete[] data;
            data = newData;
            capacity = newCapacity;
        }

        // 将元素插入到指定位置
        for (int i = size; i > index; i--) {
            data[i] = data[i-1];
        }
        data[index] = element;
        size++;
    }

    // 删除元素
    void remove(int index) {
        if (index < 0 || index >= size) {
            std::cout << "Invalid index" << std::endl;
            return;
        }

        // 将指定位置后的元素向前移动
        for (int i = index; i < size - 1; i++) {
            data[i] = data[i+1];
        }
        size--;
    }

    // 输出数组元素
    void print() {
        for (int i = 0; i < size; i++) {
            std::cout << data[i] << " ";
        }
        std::cout << std::endl;
    }
};

int main() {
    // 创建一个Array对象
    Array arr(5);

    // 插入元素
    arr.insert(1, 0);
    arr.insert(2, 1);
    arr.insert(3, 2);
    arr.insert(4, 3);

    // 输出数组元素
    arr.print();

    // 删除元素
    arr.remove(2);

    // 输出数组元素
    arr.print();

    return 0;
}

这个自定义的Array类实现了插入和删除操作,当数组满时会自动扩容,保证了数组的动态性。通过这个类,可以高效地进行插入和删除操作。

推荐阅读:
  1. 自定义C++ Array类以支持特定功能
  2. 自定义C++ Array类以支持自定义比较

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:C++ Array类在图像处理库中的实现

下一篇:C++中Array类与C++20的ranges库的协同

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》