一、初始化数组
初始化数组是最基本的清空数组的方法,可以在定义数组时将所有元素置为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 清空数组的好处在于能够自动管理动态数组的内存,减少了内存泄漏的可能。