C++创建动态数组

这篇博客介绍了如何在C++中创建动态数组,通过定义一个类实现动态数组,包括添加、删除和查找等功能。博客提供了类的定义和实现,以及主函数的示例,旨在帮助读者理解动态数组的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次写的是C++的创建动态数组的小程序,如果学过数据结构的童鞋,看着应该会很省力的,因为这个完全就是数据结构里的动态创建顺序表,几乎一模一样,不太了解的可以先看这里,没学数据结构的童鞋也不用捉急,没有什么难点,只是插入删除的地方有些烧脑,不过把十几年不用的手指头拿出来也是可以解决的,把临界考虑好就可以了。

目录

问题描述:

实现一个动态数组类,类体中包含添加,删除,查找等功能。

提示: 动态数组:通常是在堆区创建的数组,动态数组的长度及为其开辟的内存随着数组元素的添加而增加,随着数组元素的缩小而缩小。

运行结果

这里写图片描述

1.类的定义,文件名称DynamicArray.h

#ifndef _DYNAMICARRAY_H
#define _DYNAMICARRAY_H
class DynamicArray
{
public: 
    DynamicArray(int aSize=10);
    ~DynamicArray();
    DynamicArray(const DynamicArray &aRef);
    void assign(const DynamicArray &aRef);// 用一个动态数组的对象的值去修改另外一个对象
    void append(int aValue);
    bool remove(int aIndex); //删除下标为aIndex的数组元素
    bool insert( int aIndex, int aVal );//在aIndex位置的元素后面插入新元素
    bool remove(int aIndex, int aValue); //从下标为aIndex的元素开始查找,删除所有值为aValue的元素
    const int *begin() const; //返回第一个数组元素的指针
    const int *end() const; //返回最后一个元素的指针
    int at(const int aIndex) const; //返回下标为aIndex的数组元素
    void display();
    int GetSize();
    int GetLength();
private:
    int *m_iData;
    int m_iSize;
    int m_iLength;
//请自己定义数据成员

};
#endif

2.类的实现,文件名称DynamicArray.h

# include <iostream>
# include "DynamicArray.h"
# define INSERTSIZE 10
using namespace std;
//构造函数初始化
DynamicArray::DynamicArray(int aSize)
{

    do{
        m_iData = new int[aSize];
    }while(!m_iData);       
    m_iSize = aSize;
    m_iLength = 0;
}
//析构函数
DynamicArray::~DynamicArray()
{
    if(m_iData)
    {
   
### C++ 动态数组创建方法 在 C++ 中,可以通过 `new` 操作符动态分配内存来创建动态数组。以下是关于如何创建动态数组具体说明以及示例代码。 #### 使用 `new` 创建动态数组 当使用 `new` 来创建动态数组时,需要指定数组的大小,并为其分配足够的内存空间。以下是一个完整的示例: ```cpp #include <iostream> int main() { int size; std::cout << "请输入数组大小:"; std::cin >> size; // 动态分配内存 int* arr = new int[size]; // 给数组赋值 for (int i = 0; i < size; ++i) { arr[i] = i * 10; } // 输出数组内容 for (int i = 0; i < size; ++i) { std::cout << arr[i] << " "; } std::cout << std::endl; // 释放动态分配的内存 delete[] arr; return 0; } ``` 上述代码展示了如何通过 `new` 操作符创建一个整型动态数组并对其操作[^1]。注意,在完成对动态数组的操作后,必须调用 `delete[]` 来释放该数组占用的内存资源,以防止内存泄漏[^3]。 #### 使用 `std::vector` 替代传统动态数组 除了传统的基于 `new` 的动态数组外,C++ 提供了一个更为强大且易于使用的容器——`std::vector`。它能够自动管理内存,无需显式地调用 `delete` 或 `delete[]`,从而降低了因不当处理内存而导致错误的风险。下面是一段利用 `std::vector` 实现相同功能的代码: ```cpp #include <iostream> #include <vector> // 引入 vector 头文件 int main() { int size; std::cout << "请输入数组大小:"; std::cin >> size; // 定义一个初始容量为 'size' 的向量 std::vector<int> vec(size); // 赋值给向量中的元素 for (int i = 0; i < size; ++i) { vec[i] = i * 10; } // 打印向量的内容 for (const auto& elem : vec) { std::cout << elem << " "; } std::cout << std::endl; return 0; } ``` 这段代码同样实现了动态存储的功能,但借助于 `std::vector` 可以让开发者更加专注于逻辑实现而不需要担心底层细节[^2]。 #### 注意事项 - 如果尝试删除未被初始化或者已经删除过的指针,则可能导致未定义行为;因此建议始终将刚释放后的指针设置成 nullptr。 - 对于多维动态数组而言,其构建过程相对复杂一些,通常涉及嵌套循环来进行逐层分配与清理工作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值