2017-02-09 86 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);