C++ 动态数组 "losing"数据

标签 c++ arrays dynamic

首先,这是我的声明和初始化:

int** GameField = 0;
GameField = new int*[mapsize];                  
for(int i = 0; i < mapsize; i++)
        GameField[i] = new int[mapsize];

for(int j = 0; j < mapsize; j++)                
        for(int i = 0; i < mapsize; i++)
            GameField[i][j] = 0;

现在我尝试用一​​个简单的命令插入数据:

if(!(Player1.find(Move) == Player1.end()) && iter>0)            
        {
            GameResult=1;                                       
        }else
        {
            Player1[Move] = 1;                          
            GameField[Move.first][Move.second]=1;               
            if(WinCheck(Player1, Move, x, mapsize))
                GameResult = 1;
        }

我同时将数据插入到 STL map 中。 Visual Studio 没有动态数据的 native 显示,因此我无法查看表格的内容。试着观察内存,但很难理解它。程序的一部分似乎可以工作到某一点:

    bool CheckIfMovePossible(int **GameField, pair <int,int> &Move, int MapSize)
{
    int x = Move.first;
    int y = Move.second;
    bool Neighbour = false;

    if(GameField[modulo(x+1,MapSize)][y]==(1||2))                       // po prawej
        Neighbour = true;

    if(GameField[modulo(x+1,MapSize)][modulo(y+1,MapSize)]==(1||2))
        Neighbour = true;

    if(GameField[modulo(x+1,MapSize)][modulo(y-1,MapSize)]==(1||2))
        Neighbour = true;

    if(GameField[x][modulo(y+1,MapSize)]==(1||2))                       // x
        Neighbour = true;

    if(GameField[x][modulo(y-1,MapSize)]==(1||2))
        Neighbour = true;

    if(GameField[modulo(x-1,MapSize)][modulo(y+1,MapSize)]==(1||2))     // po lewej
        Neighbour = true;

    if(GameField[modulo(x-1,MapSize)][y]==(1||2))
        Neighbour = true;

    if(GameField[modulo(x-1,MapSize)][modulo(y-1,MapSize)]==(1||2))
        Neighbour = true;

    return Neighbour;

}

它应该检查容器中是否有任何相邻数据。我手动计算值并使用调试器,在每种情况下,程序的行为都好像在请求的位置没有数据,而它必须存在于 map 中。任何信息将不胜感激。

最佳答案

看起来你想用这样的代码做什么

if(GameField[modulo(x+1,MapSize)][y]==(1||2))  

是这个吗

if ( GameField[modulo(x+1,MapSize)][y] == 1 ||
     GameField[modulo(x+1,MapSize)][y] == 2)  

与您的问题无关,您的逻辑似乎做了很多工作之后已确定该函数将返回true .

考虑使用 else if 或在确定返回值后立即让代码 return true

关于C++ 动态数组 "losing"数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15836813/

相关文章:

c++ - 我可以从 std::visit 返回 auto 吗?

c# - 奇怪的 C# 动态行为

javascript - 使用 getJSON 动态编码 API 用户输入

c++ - 如何在不删除的情况下将\x1\x2\x3 ...字符转换为普通字符?

c++ - Valgrind,即使我有空, block 也肯定会丢失?

c++ - Hook 创建窗口并想要获取类名

arrays - 如何将 N 维数组的最后两个维度作为二维数组?

c - 为什么内存不分配?

arrays - 在给定条件下哪种排序采用 O(n)

python - 使用 BS4 在 Python 中进行网页抓取 - 获取动态生成的列表