gpt4 book ai didi

c++ - 无法弄清楚错误的来源(调试器说段错误)

转载 作者:行者123 更新时间:2023-11-30 01:34:09 26 4
gpt4 key购买 nike

程序编译正常,调试器指向这个函数(第3行):

#include <cstdlib>
#include <vector>
#include <iterator>

using namespace std;

vector<vector<int>> g = {{0,1,1},
{1,0,0},
{1,0,0}};
vector<char> used;

void dfs (int v) {
used[v] = true;
for (vector<int>::iterator i = g[v].begin(); i!=g[v].end(); i++)
if (!used[*i])
dfs (*i);
}

int main(int argc, char** argv) {
dfs(1);
return 0;
}

退出并返回代码 1

最佳答案

写作时

vector <char> used;

您正在创建一个空 vector ,因此访问它的任何元素都将引发未定义的行为(程序可能会崩溃、继续或执行任何操作)。

考虑类似的东西

vector <char> used(2, 0);

在其中创建两个初始化为 0 的元素。

其次,鉴于 C++ 有 bool作为一种类型,您可能需要考虑使用 vector<bool> .这种类型有问题,但在您的情况下似乎很合适,请查看 https://isocpp.org/blog/2012/11/on-vectorbool

关于c++ - 无法弄清楚错误的来源(调试器说段错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56852996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com