char grid2d[x][y];
各インデックスの定数(または定義)が必要であるため、機能しません。私の問題は、これらの値がランタイムまでわからないということです。しかし、私はこの形式を期待している関数を呼び出すので、このシグネチャを使用する必要があります。C++で、変数grid2d [x] [y]を設定する方法
これを動作させる方法に関するアイデアはありますか?私は同じ理由(実行時まで知られていない値)のために定義を使用することはできません。
char grid2d[x][y];
各インデックスの定数(または定義)が必要であるため、機能しません。私の問題は、これらの値がランタイムまでわからないということです。しかし、私はこの形式を期待している関数を呼び出すので、このシグネチャを使用する必要があります。C++で、変数grid2d [x] [y]を設定する方法
これを動作させる方法に関するアイデアはありますか?私は同じ理由(実行時まで知られていない値)のために定義を使用することはできません。
std::vector
を使用すると、実行時に動的サイジングを可能にするコンテナを取得できます。例えば
:
std::vector<std::vector<int>> grid2d;
これは答えではありません、これはコメントです – Amadeus
あなたが署名としてchar型へのポインタへのポインタを使用することができます。
void func(char **grid2d)
{
//use grid2d[1][2]
}
int main()
{
//input x and y
char **grid2d;
grid2d=new char*[x];
for(int i=0;i<x;i++)
grid2d[i]=new char[y];
func(grid2d);
}
それとも、単に一般的にstd::vector
void func(vector<vector<char> > grid2d)
{
//use grid2d[1][2]
}
int main()
{
//input x and y
vector<vector<char> > grid2d(x,vector<char>(y));
func(grid2d);
}
を使用することができ、あなたが使用する必要があります[ 'のstd :: vector'](http://en.cppreference.com/w/cpp/container/vector )動的配列の代わりに。 –
btwどうしても#defineを使って定数を定義するのは避けるべきです。 – user463035818
VLA(Variable Length Arrays)は標準的なC++の機能ではありません... –