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

根据您的需要,您可以使用一个std::vector<std::vector<T> >或一个类来提供一个std::vector<T>二维区域的接口。对于后者,您将重载operator[]()以返回一个对象,该对象为内部的子范围提供std::vector<T>数组本身的砍伐。如果您只想使用 subscriot 运算符,返回 astd::vector<T>::iterator会起作用,但它不会暴露,例如,begin()end()迭代器。

于 2012-11-17T19:30:38.600 回答
0

如果您真的想使用new关键字,则必须进行两步初始化:

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 回答