ページ 1 / 1
二次元配列の初期化
Posted: 2010年5月27日(木) 14:35
by たち
グローバル変数等で二次元配列を初期化する時に
int MapData[3][3] = {
{1,1,1},
{1,1,1},
{1,1,1}
}
の様にいつも書いております。
最近気がついたのですがこれをメイン関数内で初期化しようとすると
MapData[0][0] = 0のように一個ずつ書かないとエラーになってしまいます。
まとめて書く方法はないのでしょうか?
これでは出来ませんでした。
MapData[/url][/url] = {
~略
}
Re:二次元配列の初期化
Posted: 2010年5月27日(木) 15:04
by toyo
関数内でも宣言時なら出来ますよ
int main(void)
{
int MapData[3][3] = {
{1,1,1},
{1,1,1},
{1,1,1}
};
return 0;
}
Re:二次元配列の初期化
Posted: 2010年5月27日(木) 15:07
by たいちう
#include <iostream>
using namespace std;
int MapData[3][3];
int main() {
const int data[3][3] = {
{ 1, 2, 3},
{ 4, 5, 6},
{ 7, 8, 9},
};
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
MapData[j] = data[j];
for (int y = 0; y < 3; y++) {
for (int x = 0; x < 3; x++)
cout << MapData[x][y] << " ";
cout << endl;
}
return 0;
}
main関数で初期化したい理由が分かりませんが、
私が書くならこんな感じです。
マップデータということなので、代入時に添え字を入れ替えています。
Re:二次元配列の初期化
Posted: 2010年5月27日(木) 15:09
by toyo
よく読んだら宣言時以外でという意味ですかね
それなら無理です
初期化用のデータを準備しておいてコピーするのがいいのでは
Re:二次元配列の初期化
Posted: 2010年5月27日(木) 15:54
by くりく
static int MapData[3][3];
ではだめでしょうか?