如何清除数组中的元素?

时间:2017-02-09 15:44:18

标签: c++

我想清除阵列中的所有元素,但我不知道如何自动清除它。它有功能吗?就像清单()列表一样?

int array[5] = {2,5,4,8,6};

然后我想清除所有内容并添加一组新的值

2 个答案:

答案 0 :(得分:4)

您的问题无效,因为您无法clear out 一个数组。数组具有固定大小,并且总是会有一些值。

如果要重新使用数组,只需覆盖现有值。

也许考虑使用std::vector。使用clear()功能,您可以清除std::vector

中的所有值

了解std::vector Here

答案 1 :(得分:0)

清除数组意味着将所有值设置为T(),对于基本算术类型的数组,相当于将所有元素设置为零。

您可以通过多种方式完成此操作。第一个是使用标头std::memset中声明的标准C函数<cstring>。例如

#include <iostream>
#include <cstring>

int main() 
{
    int array[] = { 2, 5, 4, 8, 6 };
    const size_t N = sizeof( array ) / sizeof( *array );

    for ( int x : array ) std::cout << x << ' ';
    std::cout << std::endl;

    std::memset( array, 0, N * sizeof( int ) );

    for ( int x : array ) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}

另一种方法是使用标头std::fill中声明的标准算法<algorithm>。例如

#include <iostream>
#include <algorithm>

int main() 
{
    int array[] = { 2, 5, 4, 8, 6 };
    const size_t N = sizeof( array ) / sizeof( *array );

    for ( int x : array ) std::cout << x << ' ';
    std::cout << std::endl;

    std::fill( array, array + N, 0 );

    for ( int x : array ) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}

在这两种情况下,程序输出都是

2 5 4 8 6 
0 0 0 0 0 

如果您需要可变长度数组,请使用标准容器std::vector<int>

例如

#include <iostream>
#include <iomanip>
#include <vector>

int main() 
{
    std::vector<int> array = { 2, 5, 4, 8, 6 };

    for ( int x : array ) std::cout << x << ' ';
    std::cout << std::endl;

    array.clear();

    std::cout << "array is empty - " << std::boolalpha << array.empty() << std::endl;

    return 0;
}

程序输出

2 5 4 8 6 
array is empty - true

代替array.clear();,程序中也可以使用array.resize( 0 );