当前位置: 首页 > 知识库问答 >
问题:

我一直在犯这个错误,这让我越来越沮丧,请帮助我

罗法
2023-03-14

第1034行:Char 9:运行时错误:引用绑定到'std::vector'类型的空指针

void gameOfLife(vector<vector<int>>& board) {
   vector<vector<int>> newBoard;
    for(int i = 0; i < board.size(); i++){
        for(int j = 0; j < board[i].size(); j++){
            if(board[i][j] == 0 && neibSum(board,i,j) == 3)
                newBoard[i][j] = 1;
            else if(board[i][j] == 1 && neibSum(board,i,j) > 3)
                newBoard[i][j] = 0;
            else if(board[i][j] == 1 && neibSum(board,i,j) < 2)
                newBoard[i][j] = 0;
            else
                newBoard[i][j] = 1;
        }
    }
    for(int i = 0; i < board.size(); i++){
        for(int j = 0; j < board[i].size(); j++){
            cout << newBoard[i][j] << " ";
        }
        cout << endl;
    }
    
}

共有2个答案

裴承安
2023-03-14

你可以在一行中初始化你的电路板

#include <vector>

// two constants for you board size
// stl containers mostly accept std::size_t for their sizes
constexpr std::size_t board_height_v = 25;
constexpr std::size_t board_width_v = 80;

enum class cell
{
    dead,
    alive
};

int main()
{
    // I made a cell enum so you can more easily spot where the initial cell value is set.
    // now lets initialize the board to the correct size
    std::vector<std::vector<cell>> newBoard(board_height_v, std::vector<cell>(board_width_v,cell::dead));

    return 1;
}
齐博厚
2023-03-14

变量“newboard”是一个大小为0的向量。在:

newBoard[i][j] = 1;

您正在尝试访问未分配的内存。您需要首先分配内存(例如使用resize)。

   vector<vector<int>> newBoard;
    newBoard.resize(board.size());
    for(int i = 0; i < board.size(); i++){
        newBoard[i].resize(board[i].size());
        for(int j = 0; j < board[i].size(); j++){
...

编辑:另外,你可以使用。at()函数,而不是[]来访问向量元素:newBoard。在(我)。在(j)中包含边界检查。它不会解决您的问题,但会让您更容易理解错误消息。

 类似资料:
  • 我用python编写了以下代码,该代码转到数组中的URL并查找有关该页面的特定信息 - 各种Web抓取器。这个接受一个Reddit线程数组,并输出每个线程的分数。该程序几乎从不完全执行。通常,在收到下面的错误消息之前,我会经历5次左右的迭代。有人可以帮我了解这一点吗? 我收到的错误消息是:

  • 我已经花了一个多小时试图解决这个问题,但我什么都没做。 当我试图使用Maven编译我的项目时,我得到了以下错误: [错误]无法执行目标组织。阿帕奇。专家插件:maven assembly插件:2.2-beta-5:single(默认cli)在GankALane项目上:无法解析mojo org的配置。阿帕奇。专家插件:maven assembly插件:2.2-beta-5:单参数存档:在组织中找不到

  • 所以基本上我应该做的是,我应该得到一个字符串的数组列表,用两个字符串填充它,然后比较它们。例如,如果一个字符串是“1,2,3,4”,第二个字符串是“7,6,2,8,1”,那么它应该打印出“1,2”,因为它打印出的数字相似。但我遇到了和arrayindexoutofbounds异常,我不知道如何修复它。此外,如果你有任何可能缩短此代码的提示,也请告诉我。我有一个习惯,让我的代码超长。

  • 日安, 我有一个问题,在我的代码中,一个声明在函数之外有一个错误。 谢谢

  • 错误: log4j:WARN找不到记录器(org.hibernate.cfg.annotations.Version)的appender。log4j:警告请正确初始化log4j系统。线程“main”组织中出现异常。冬眠例外GenericJDBCException:无法在组织上打开连接。冬眠例外SQLStateConverter。在org上处理非特定异常(sqlstatecoverter.java:

  • 下面是我上传数据的Json格式,但它显示了错误,即在[source:(PushbackInputStream);line:1,column:2]]2021-05-04 12:57:07.799 WARN 876----[nio-9090-exec-4].W.S.M.S.DefaultHandlerExceptionResolver:Resolved[org.springframework.http