C++清空数组的多种方法(C/C++清空数组的两种方法)

一、初始化数组

初始化数组是最基本的清空数组的方法,可以在定义数组时将所有元素置为0或者其他初始值。例如:

int arr[10] = {0}; // 将数组所有元素初始化为0

这种方法的优点是简单方便,适用于数组元素数较少,需要清空的场景。

二、手动清空数组

手动逐个赋值清空数组就是将数组所有元素一个一个赋值为0或其他特定值,这种方法比较麻烦繁琐,但是适用于需要清空部分数组元素的情况。

int arr[10];
for(int i=0;i<10;i++){
    arr[i] = 0; // 将数组元素逐个赋值为0
}

这种方法的缺点是需要手动逐个赋值,当数组元素很多时会比较繁琐。

三、memset清空数组

memset是C++标准库中的函数,可以将某一块内存的值全部设置为指定值。实际上,C++ 中的数组在内存中也是一段连续的内存块,因此我们可以使用 memset 函数清空数组。

int arr[10];
memset(arr, 0, sizeof(arr)); // 将数组所有元素赋值为0,需要引入string.h头文件

memset 函数的第一个参数为数组名,第二个参数为要赋的值,第三个参数为数组的大小。使用 memset 函数的优点是速度较快,适用于需要清空大数组。

四、fill清空数组

fill 是C++标准库中的函数,可以将一段内存区域按照指定值进行填充。C++11 以后,STL库中的array、vector等容器类中也提供了 fill 函数。

int arr[10];
fill(arr, arr+10, 0); // 将数组所有元素赋值为0,需要引入algorithm头文件

fill 函数第一个参数为要填充的区域的首地址,第二个参数为要填充的区域的尾地址,第三个参数为要赋的值。使用 fill 函数的优点是可以适用于STL容器类中的数组、vector等。

五、循环赋值清空数组

使用循环遍历数组的方式,将数组所有元素逐个赋值为0,适用于需要清空部分数组元素时,或者需要进行一些特殊操作的情况。

int arr[10];
for(int i=0;i<10;i++){
    arr[i] = 0; // 将数组元素逐个赋值为0
}

这种方式的缺点是效率较低,但是可以应对复杂的数据结构和算法问题。

六、使用 unique_ptr 清空数组

unique_ptr 是 C++11 新增的一个智能指针类型,其特点是具有独占性,即只能有一个 unique_ptr 指向同一个对象。所以,我们可以使用 unique_ptr 来管理动态数组,从而可以方便地清空。

unique_ptr arr(new int[10]);
memset(arr.get(), 0, sizeof(int)*10); // 将数组所有元素赋值为0

unique_ptr 第一个参数是一个指向动态数组的指针,第二个参数是删除函数的指针。如果通过 unique_ptr 来清空数组,需要将动态数组的指针传给 memset 函数。使用 unique_ptr 清空数组的好处在于能够自动管理动态数组的内存,减少了内存泄漏的可能。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平