【发布时间】:2019-08-14 14:39:48
【问题描述】:
我有一个向量的向量,从文件加载后它代表我的地图,有一个问题,我该如何保存到它?比如坐标x和y是这种类型吗?
//Field.cpp
enum Fieldtype <River,Building,Earth,Sky...>
//Logic.cpp
std::vector<std::vector<Field::Fieldtype>> my_map;
char array[10][10];
将我的地图从 txt 文件加载到 char 数组后,现在的问题是如何将其保存到地图中?
例如这张地图:
SSSSS
SSSSS
BBBBB
EEEEE
S 是我的天空,B 正在建造……我试过了
for(int x = 0; x < 6; x++)
{
for(int y= 0; y< 6; y++)
{
if(array[x][y] == 'S')
my_map.at(x).at(y) = Field::Sky;
}
}
这让我的向量超出范围。有人可以帮帮我吗?
【问题讨论】:
-
考虑使用
std::map<std::pair<int,int>, FieldType> my_map;代替向量。然后它就变成了my_map.insert({x,y}, Field::Sky); -
有一个循环,使用
push_back将每一行组合成一个局部向量,然后在每行的末尾调用push_back将该局部向量添加到my_map向量中。 -
@PaulMcKenzie 你知道如何在构造函数中初始化地图吗?像这样? Logic() : board_width_(0), board_height_(0), map_(0,0) {} 它给了我一个错误
标签: c++ multidimensional-array enums stdvector