Итак, вот мой вопрос, поскольку я искал через Интернет какое-то время, но, похоже, не получил четкого ответа, чтобы заставить его работать. Я работаю над созданием простой игры sokoban на C++ с помощью консоли.Передача 2D-массива функции в 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++;
}
}
теперь, что я хотел бы сделать с этим 2D массива:
- взять один элемент в то время, и создать экземпляр класса, в зависимости на символе в массиве
- места экземпляра в другой массив, который принимает экземпляр его типа
Таким образом, в конце концов, я в конечном итоге со вторым массивом экземпляров, где EAC h экземпляр зависит от символа, который я взял из первого массива. сохраняя при этом одни и те же «координаты»
Любая помощь будет высоко оценена,
Благодарности
Проверьте это: http://stackoverflow.com/questions/6648828/passing-2d-array-as-argument – chris
Возможный дубликат [Как использовать массивы в C++?] (Http://stackoverflow.com/вопросы/4810664/как-делать-я-потребительные массивы-в-с) –