0

私は初心者の問題を抱えています:

class Snake
{
public:
    int mapa[][];
    Snake(int szer,int wys)
    {
        mapa[szer][wys];
    }
};

私は上記のようなことをしようとしています(コンストラクターで定義されたサイズで配列を作成します)が、C++では不可能なようです。この作業を行う方法はありますか?

4

3 に答える 3

2

はい:

std::vector<std::vector<int> > ...;
于 2012-11-17T19:23:15.387 に答える
1

必要に応じて、2 次元エリアのインターフェイスをstd::vector<std::vector<T> >提供する またはクラスを使用できます。std::vector<T>後者の場合、オーバーロードして、内部の部分範囲に配列自体をoperator[]()削除するオブジェクトを返します。std::vector<T>subscriot 演算子を使用したいだけの場合、 a を返すstd::vector<T>::iteratorことはできますが、たとえばbegin()andend()イテレータは公開されません。

于 2012-11-17T19:30:38.600 に答える
0

new本当にキーワードを使用したい場合は、2 段階の初期化を行う必要があります。

int **mapa;
Snake(int szer,int wys)
{
    mapa = new int*[szer];
    for (int i = 0; i < szer; i ++)
        mapa[i] = new int[wys];
...
于 2012-11-17T19:24:44.063 に答える