【解決方法】C++ で配列 1 行と 0 列を使用してプログラム コードを実行するにはどうすればよいですか?

プログラミングQA


#include
名前空間 std を使用します。

int main()
{
// 1 行 0 列の配列。
int arr[1][0] ={1};
int i、j;

cout<<"2D 配列を印刷しています:\n" ; // 各配列要素の値を出力
for(i=0;i<1;i++)
{
for(j=0;j<0;j++)
{
cout<<"\t"< =”” }
=”” cout< =””
=”” リターン=”” 0;
}

試したこと:

main.cpp: 関数 ‘int main()’ 内:
main.cpp:15:22: エラー: ‘int の初期化子が多すぎます [1][0]’
15 | int arr[1][0] ={1};
| | ^

こうなってしまい、解き方がわからない。

解決策 2

二次元配列には (rows x columns) アイテム。
なぜなら、あなたの場合、 columns = 0、配列は 0 アイテム。 いつものように、コンパイラは正しいです。

解決策 1

C++
// an array with 1 row and 0 column.
int arr[1][0] ={1};

それは意味がありません。配列は長さゼロの次元を持つことはできません。 また、セルが 1 つしかない配列が必要になるのはなぜでしょうか。 次のようなものが必要です:

C++
// an array with 1 row and 0 column.
int arr[2][2] ={ {1, 2}, { 3, 4} };

解決策 3

「1行0列」では、要素を格納するスペースがないと思いますが、

int arr[1][0] ={1};

要素を配列に格納しようとしましたが、それは正しくありません。
すべての要素が配列でもある配列が必要で、このような 1 つの要素を含む場合は、次のようにコーディングできます。

#include <vector>
#include <iostream>
using namespace std;
void test()
{
	vector< vector<int> > v(1);
	cout << "v.size ==" << v.size() << "; v[0].size == " << v[0].size() << endl;
}

または、次のようにコーディングできます。

int* arr[1]; //arr[1] is a pointer, and it can pointer to an int-array later
int arr1[] = { 1,2,3 };
arr[0] = arr1; // now arr[0][1] == 2

コメント

タイトルとURLをコピーしました