2015-04-27 2 views
1

извините, если на это был дан ответ в другом месте. Я довольно новичок и не знаю, как реально объяснить такой вопрос.Самый эффективный способ создания многомерного массива одинаковых символов? [C++]

Прямо сейчас, я хочу создать массив [5] x [5] для всех символов «+». Вот что у меня есть:

#include <iostream> 
using namespace std; 

int main() { 
char map[5][5] = {{'+','+','+','+','+'},{'+','+','+','+','+'},{'+','+','+','+','+'},{'+','+','+','+','+'},{'+','+','+','+','+'}}; 

for (int x = 0; x < 5; x++) { 
    for(int y = 0; y < 5; y++) 
     cout << map[x][y] << " "; 
    cout << endl; 
} 

return 0; 
} 

Есть ли способ, чтобы повторить эти «+» символов без необходимости перечислять каждый снова и снова?

Спасибо :)

В конечном счете, я ищу, чтобы создать [п] х [п] карту, что игрок может ходить и взаимодействовать в качестве проекта обучения весело.

ответ

3

Ну это довольно просто: просто сделать простой цикл:

char map[5][5]; 
for (int x = 0; x < 5; x++) { 
    for(int y = 0; y < 5; y++) 
     map[x][y]='+'; 
} 
+0

оцените его :) Спасибо всем остальным – HBPatrick

2

Если вы хотите как можно меньше кода, как насчет:

#include <string.h> 
memset(&map[0][0], 'x', sizeof(map)); 
+0

Почему не просто 'memset (map, 'x', sizeof (map));'? –

+0

@BillLynch Я верю, что 'memset' хочет указатель, а не двойной указатель, поэтому вам нужно по крайней мере поместить что-то вроде' map [0] ' – meneldal

+0

@meneldal' map' может быть неявно преобразовано в 'char (*) [5 ] 'со значением, все еще указывающим на' map [0] [0] '. Поэтому я думаю, что это должно сработать. – Lingxi

0

Конструкторы std::vector обеспечить легкий путь к , хорошо, легко построить объект:

#include <vector> 
//... 
std::size_t n = 5; 
std::vector<std::vector<char>> map(std::vector<char>('+', n), n); 
//If using Visual Studio 2012 (or equivalent) or earlier: 
std::vector<std::vector<char> > map(std::vector<char>('+', n), n); 
+0

Вы всегда должны использовать второй, чтобы быть в безопасности, и это не Visual Studio, это только в стандарте C++ 11. – meneldal

+0

@meneldal Следовательно, «или эквивалент»: P – Casey

Смежные вопросы