2017-02-09 54 views
0

我想清除数组中的所有元素,但我不知道如何自动清除它。有没有它的功能?像clear()列表一样?如何清除数组中的元素?

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

然后我希望清除一切,并添加了一套新的价值观

+2

你是什么意思清除?元素不能从数组中移除,所以即使你没有使用它,它仍然会有一些价值。 – NathanOliver

+1

你是什么意思与“清除”?一个数组有固定数量的元素,因此你不能擦除元素。 – user463035818

+2

只需在那里放置新的值。无需清除。但是,如果你使用'std :: array',那么你可以直接赋值'{}'。 –

回答

4

你的问题是不正确的,因为你不能clear out数组。数组具有固定的大小,并且总是会有一些值。

如果要重新使用数组,只需覆盖现有的值。可能考虑使用std::vector。使用clear()函数,可以清除std::vector中的所有值。

了解std::vectorHere

0

要清除的阵列装置的所有值设置为T(),对于基本算术类型的数组相当于设置为零的所有元素。

你可以用几种方法做到这一点。第一个是使用标头<cstring>中声明的标准C函数std::memset。例如

#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);