Seg 错误初始化列表向量与控制台输入
Seg fault initializing vector of lists with input from console
我一直在研究涉及树的问题的解决方案。我的策略是获取输入并将图形表示为邻接列表。不幸的是,我遇到了分段错误,无法弄清楚我在这里做错了什么。
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int N;
cin >> N;
int M;
cin >> M;
// matrix of adjacency list to hold node values
vector<list<int> > adjList(M, list<int>());
// create adjacency list
int ui, vi;
while(true) {
cin >> ui;
cin >> vi;
ui--;
vi--;
adjList[ui].push_front(vi);
adjList[vi].push_back(ui);
}
return 0;
}
当我运行程序并输入此输入时,它会停止运行并出现分段错误。
10 9
2 1
3 1
4 3
5 2
6 1
7 2
8 6
9 8
10 8
注意:第一行不是图形的一部分,它定义了图形的约束。所以这个总共有 10 个顶点和 9 条边。
你的向量有M=9
个元素。这些元素的编号从 0 到 8,并且您的代码正在尝试访问索引 9 处的元素(最后一行中的 10 减 1)。
相关文章:
- 如何防止父进程在孩子死后丢失控制台输入?
- 如何使用字符串获取用户控制台输入
- 如何读取控制台输入并将其存储到向量字符串中
- 如何检测控制台输入不是C++中的数字
- 关闭控制台输入C
- 验证 C++ 中的控制台输入
- 如何将文件输入到C++并比较控制台输入
- 如何获取类似 QIODevice 的控制台输入信号 (stdin)
- C++中的GTK:基于控制台输入更改标签
- 如何在C++中调用具有参数和用户控制台输入的函数
- 用C++读取一个很长的控制台输入
- Seg 错误初始化列表向量与控制台输入
- C++控制台应用呈现其他 CMD 窗口不接受控制台输入
- 异步控制台输入冻结了以前的输入 C
- 控制台输入,直到.然后输入
- C++阻止5个字符后的控制台输入
- 在代码中定义字符串与控制台输入之间的区别
- 如何将控制台输入写入等待ReadConsoleInput的子应用程序
- 在代码块中,您在哪里键入控制台输入
- 将文件中的数字与控制台输入进行比较