全局变量为空C++
Global Variables Empty C++
我必须使用三个全局变量:
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));
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- C ++程序如何返回我的数组或写入全局变量
- 为什么我的数组值与此处的全局变量不匹配?
- QT C++中对全局变量的未定义引用
- 跨多个类的全局变量而不会出现重定义错误?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++线程不检测全局变量更改
- 在 elf 文件中查找全局变量的位置
- 包括一个类来定义全局变量参数 c++ :(