ユーザー入力またはcinから配列に値の新しい行を作成するにはどうすればよいですか?
配列に既に値の行があり、2 行目の値を追加する必要があるが、最初の行には追加されていないとします。中かっことコンマをどのように配置しますか?ユーザーはそれを入力しますか、それとも何かありますか?ブレーサーとコンマが自動的に挿入されます
int test [] = { 1, 21, 771, 410, 120711 },
{ 1, 2, 3, 4, 5 };
非常に下手で汚いトリックがなければ、これは不可能です。リストまたはベクトル (配列に最も近い) を使用することをお勧めします。もう 1 つの可能性は、ポインタを使用して拡張し、一時メモリを作成し、古いデータをコピーしてから新しいデータを追加することです。
二次元配列を求めています。これは次のように宣言されます。
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]
など)と同じ方法で行われます。
配列の内容を保持したまま、配列のサイズを変更する方法はありません。配列のサイズを変更する唯一の方法は、new
演算子を使用して動的メモリをポインターに割り当てることですが、これにより、配列が以前に保持していたデータが破棄されます。サイズ変更可能な配列が必要な場合は、おそらく使用する必要がありますstd::vector.
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});
}