1

ユーザー入力またはcinから配列に値の新しい行を作成するにはどうすればよいですか?

配列に既に値の行があり、2 行目の値を追加する必要があるが、最初の行には追加されていないとします。中かっことコンマをどのように配置しますか?ユーザーはそれを入力しますか、それとも何かありますか?ブレーサーとコンマが自動的に挿入されます

int test [] = { 1, 21, 771, 410, 120711 },
{ 1, 2, 3, 4, 5 };
4

4 に答える 4

0

非常に下手で汚いトリックがなければ、これは不可能です。リストまたはベクトル (配列に最も近い) を使用することをお勧めします。もう 1 つの可能性は、ポインタを使用して拡張し、一時メモリを作成し、古いデータをコピーしてから新しいデータを追加することです。

于 2012-12-08T03:17:48.693 に答える
0

二次元配列を求めています。これは次のように宣言されます。

int test[][5] = {
    {1, 21, 771, 410, 120711},
    {1, 2, 3, 4, 5 },
    // Add more if you want.
};

最初の配列は を介し​​てtest[0]、2 番目の配列は を介し​​てアクセスされます。最初の配列test[1]の最初の要素は 、test[0][0]2 番目の要素はtest[0][1]などです。

これは静的サイズの配列であることに注意してください。実行時に変更することはできません。必要な行数が事前にわかっている場合は、次のように宣言するだけです。

int test[NUMBER OF ROWS][NUMBER OF COLUMNS];

後で値を入力します。ただし、サイズを変更することはできません。完全に動的な配列が必要な場合は、ベクトルのベクトルを使用する必要があります。

std::vector< std::vector<int> > test;

次に、次のように行を追加します。

test.push_back(std::vector<int>());

次のように各行に要素を追加します。

// Adds a number to the first row.
test[0].push_back(some_int);

test[0]アクセスは、静的配列 ( 、test[0][0]など)と同じ方法で行われます。

于 2012-12-08T03:20:20.200 に答える
0

配列の内容を保持したまま、配列のサイズを変更する方法はありません。配列のサイズを変更する唯一の方法は、new演算子を使用して動的メモリをポインターに割り当てることですが、これにより、配列が以前に保持していたデータが破棄されます。サイズ変更可能な配列が必要な場合は、おそらく使用する必要がありますstd::vector.

于 2012-12-08T03:23:54.123 に答える
0

C++11 を使いたい場合は、次のように std::vector を使用してイニシャライザ リストを保持できます。

#include <vector>

int main()
{
  // initialise
  std::vector<std::vector<int>> test = { { 1, 21, 771, 410, 120711 },
                                         { 1, 2, 3, 4, 5 } };

  // add new data from user
  test.push_back({9, 8, 7, 6, 5, 4, 3, 2, 1});
}
于 2012-12-08T03:24:22.707 に答える