0

所以这是我的问题,因为我已经在互联网上查看了一段时间,但似乎无法获得明确的答案来使其工作。我正在使用控制台在 C++ 中创建一个简单的推箱子游戏。

首先,我很确定如果它是一个大数组,由于内存强度,将数组传递给函数不是一个好主意。一切都很好,这应该不是问题,因为我最多只有大约 32x41,而且我什至不会达到最大值。那么我应该传递整个数组还是传递指针?

其次,我的数组大小并不总是相同的。我不确定这是否是一个重要因素。

第三,如果我要传递指针,在开始使用它们之前如何创建/初始化它们。我的数组是按以下方式创建的:

string line;
string arr[30];
int i = 0;
char mazeArr[30][40];
int k, count;

if (mazeStream.is_open())
{
  while ( mazeStream.good() && !mazeStream.eof() )
  {
      getline (mazeStream,line);
      cout << line << endl;
      arr[i] = line;
      i++;
  }
  mazeStream.close();
  cout << endl;
}

else cout << "Unable to open file"; 

for ( count = 0; count < 12; count ++)
{
    string::const_iterator iterator1 = arr[count].begin();
     k = 0;

    while (iterator1 != arr[count].end())
    {
        mazeArr[count][k] = *iterator1;
        iterator1++;
        k++;
    }
}

现在我想用这个二维数组做的是:

  • 一次取一个元素并创建一个类的实例,具体取决于数组中的符号
  • 将实例放入另一个数组中,该数组采用实例的类型

所以最后我会得到第二个实例数组,其中每个实例都依赖于我从第一个数组中获取的符号。同时保留相同的“坐标”

任何帮助将不胜感激,

谢谢

4

1 回答 1

0

我会按照以下方式做一些事情:

char **createMaze(width, height)
{
    // Dynamically allocate memory creating a pointer array of pointers
    char **maze = new char*[width];

    // Loop to allocate memory for each pointer array
    for(int i = 0; i < width; i++)
        maze[i] = new char[height];

    return maze;
}

int main()
{
    width = 40;
    height = 30;
    char **maze = createMaze(40, 30);

    // You can now access elements from maze just like a normal
    // 2D array   maze[23][12]   - You can also pass this into
    // a function as an arugment      

    return 0;
}

此代码未经测试.. 因为我是在浏览器 XD 中编写的。

于 2012-06-14T01:54:04.480 回答