【发布时间】:2020-07-22 21:10:50
【问题描述】:
vector< vector<int> > vec_c(3);
//Code #1
for(int i = 0; i < vec_c.size(); i++){
for(int j = 0; j < vec_c[i].size(); j++){
cout << vec_c[i][j] << " ";
}
cout << endl;
}
//Code #2
cout << "It is here" << vec_c[0][0] << endl;
所以我的代码的第一部分运行顺利,输出向量没有任何问题,但是当我尝试单独调用向量中的元素时,它显示“分段错误”。我不知道为什么,因为基本上他们两个都在做同样的事情。
【问题讨论】:
-
2nc 代码不检查访问是否有效,如果任何向量为空,则您的访问越界,导致未定义行为。
-
是的,我理解这一点,但是当代码 #1 运行时,它首先应该通过 cout
-
我们需要猜测。为此,您需要提供一个代码示例来重现您正在经历的行为。使用minimal reproducible example 作为灵感。 MRE 的真正美妙之处在于,如果不将 bug 周围的噪音水平降低到您凝视几秒钟、咕哝几句诅咒,然后在没有任何帮助的情况下修复 bug 的程度,就很难做出一个 MRE。