2017-02-09 6 views
0

私は配列内のすべての要素をクリアしたいが、私はそれを自動的にクリアする方法を知らない。そこには機能がありますか?リストのclear()と同様?配列内の要素を消去する方法は?

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

その後、私はすべてをクリアし、clear out配列することができないため

+2

クリアアウトとはどういう意味ですか?要素を配列から削除することはできません。たとえそれを使用していなくても、配列にはいくらかの価値があります。 – NathanOliver

+1

「クリアアウト」とはどういう意味ですか?配列には要素数が固定されているため、要素を消去することはできません。 – user463035818

+2

ここに新しい値を入力してください。クリアする必要はありません。しかし 'std :: array'を使うと' {} 'を代入することができます。 –

答えて

4

あなたの質問が有効でない値の新しいセットを追加したいです。配列は固定サイズであり、常に値があります。

アレイを再利用する場合は、既存の値を上書きします。

おそらくstd::vectorを使用することを検討してください。 clear()関数を使用すると、std::vectorからすべての値をクリアできます。

学ぶ約std::vector

Here
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; 
} 

別の方法は、ヘッダ<algorithm>で宣言され、標準的なアルゴリズムstd::fillを使用することです。あなたは可変長配列は、その後、標準コンテナstd::vector<int>を使用する必要がある場合は、両方のケースでは例

#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 

です。

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

ためのプログラムの出力は、プログラムでarray.resize(0);をもが使用できる代わりarray.clear();

2 5 4 8 6 
array is empty - true 

あります。

関連する問題