段错误的可能原因
导致段错误的可能原因
1.数组越界
1)n = INT_MAX?
有时题目说的范围是int的取值范围,而不是1-n,
此时,如果使用bool vis[N]来申请会出错,需要使用unordered_map<int, bool> mp;
2)unsigned int cnt = v.size() - 1
这种写法看似没有问题,但是当v为空时,cnt会赋值为-1,而unsigned int 无法表示负数,
会变为一个很大的正整数,在后续遍历时导致段错误。
2.函数错误
Stoi和Stod使用前需保证传入的字符串是合法的数字/小数。
STL中的front、back和top函数需要配合empty函数使用,为空时访问会报错。
3.栈溢出
有时使用DFS会导致栈空间溢出,此时应该改用BFS+queue的形式。