全局变量为空C++

Global Variables Empty C++

本文关键字:C++ 全局变量      更新时间:2023-10-16

我必须使用三个全局变量:

int maxX = 0;
int maxY = 0;
vector<vector<char>> mapVector(maxX, vector<char>(maxY));

我正在一个功能中初始化maxX和maxY。

maxY = newString.size();
maxX = linesCount;

最后一个在另一个:

for (size_t i = 0; i < maxX; i++)
{
for (size_t j = 0; j < maxY; j++)
{
if
 (mapBuffer[y] != 'n')
{
mapVector[i][j] = mapBuffer[y];
y++;
}
if ((mapBuffer[y] == 'n') || (mapBuffer[y] == ''))
{
for (size_t x = j + 1; x < maxY; x++)
{
mapVector[i][x] = ' ';
}
y++;
break;
}
}
}

所以,问题是,当我尝试从其他功能访问"vector> mapVector(maxX,vector(maxY));"时,变量似乎是空的,但maxX和maxY不是。 这很奇怪。你认为为什么会这样?

您应该使用循环调整二维向量的大小。将地图矢量调整为最大 Y然后使用循环将 mapVector 中的每个条目的大小调整为 maxY 的大小

参考 : 调整多维向量的大小

int maxX = 0;
int maxY = 0;
vector<vector<char>> mapVector(maxX, vector<char>(maxY));

初始化大小分别为 maxX 和 maxY 的向量的向量。当 maxX=0 和 maxY=0 时,它发生在第 3 行。如果您稍后更改 maxX 或 maxY,它不会更改任何内容。

要更改 mapVector 的大小,请使用resize或通过push_back添加元素

编辑:

试试这个

vector<vector<char>> mapVector(0,vector<char>(0)); //intialise here: doesn't make any difference using maxX=0 or not

然后在设置maxX和maxY之后在函数的顶部执行此操作

mapVector.resize(maxX);
for (int i=0;i<maxX;i++){
    mapVector[i].resize(maxY);
}

或更简洁

mapVector.resize(maxX,vector<char>(maxY));