1

選択ソート用のプログラムを作成中です。std::vector に関する投稿をしましたが、この投稿は別のテーマです。

プログラムをコンパイルすることはできましたが、main メソッドで insert() を呼び出したときに実行時エラーが発生しました。

私の ArrayS には、コピー コンストラクターとして以下のコードがあり、ArrayS の作成時に nElems を 0 に初期化することもできます。

[ArrayS.cpp]

ArrayS::ArrayS(int max)
{
    std::vector<long> a;                 
    nElems = 0; 
}

void ArrayS::insert(long value)    // put element into array
      {
      a[nElems] = value;             // insert it
      nElems++;                      // increment size
      }

[配列S.h]

private:

std::vector<long> a;

int nElems; 

さて、nElems を操作するために ArrayS.cpp で get/set メソッドが必要ですか? C++ でプライベート変数をどのように扱うかわかりません。

ありがとうございました。

4

1 に答える 1

1

ベクトルはそのサイズを追跡します。また、効率を高めるために、はそのアクセスに対応するのに十分な大きさでa[nElems]あると想定します。vector

あなたが望むように見えます:

void ArrayS::insert(long value)    // put element into array
      {
      a.push_back(value);             // insert it AND increment size
      }

無視してもいいようですnElems。ベクトルのサイズが必要な場合は、 を呼び出すだけa.size()です。

于 2013-03-19T22:14:54.747 に答える