-2

配列の値を追加または削除するにはどうすればよいですか?

のセットを取得したら、次のint A[3] = {1, 2, 3}ように変更できA[2] = {1, 4}ますか?

STL ( , , )を使用する代わりに、演算子newを使用して同様のことを行うことができる C++ マニュアルを読んだ後、私はこれを求めています。deletevectorsetmap

4

2 に答える 2

7

C++ の配列は常に固定サイズです。いくつかの方法で、そうでないふりをすることができます。

  1. 必要なサイズの新しい配列を作成し、必要な要素を古い配列から新しい配列にコピーしてから、古い配列を破棄します。新しい配列を古い配列と同じ配列にします。

    int *i = new int[3] { 1, 2, 3};
    
    // 'add' an element
    int *tmp = new int[4];
    std::copy(i, i+3, tmp);
    tmp[3] = 42;
    delete [] i;
    i = tmp;
    

    std::vectorはこれを内部的に、よりスマートな方法で行います。

  2. 必要なだけ大きな配列を作成し、最後にいくつかの要素が存在しないふりをします。配列の「サイズの変更」は、最後に異なる数の要素が存在しないふりをすることで構成されます。

    int i[100];
    size_t size = 0; // number of elements that 'exist'
    
    // 'add' an element
    i[size++] = 42;
    
于 2013-08-18T14:28:38.700 に答える