创建相同字符的多维数组的最有效方法是什么? [C ++]

时间:2015-04-27 01:46:50

标签: c++ arrays dictionary multidimensional-array repeat

对不起,如果已经在其他地方回答了这个问题。我很新,不知道如何真正解释这样的问题。

现在,我正在寻求创建一个[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;
}

有没有办法重复这些&#39; +&#39; chars而不必一遍又一遍地列出每一个?

谢谢:)

从长远来看,我希望创建一个[n] x [n]地图,让玩家可以四处走动并作为一个有趣的学习项目进行互动。

3 个答案:

答案 0 :(得分:3)

嗯,这很简单:只做一个简单的循环:

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

答案 1 :(得分:2)

如果您想要尽可能少的代码,那么:

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

答案 2 :(得分: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);