【发布时间】:2019-03-25 04:30:11
【问题描述】:
当我在比较中使用 vector.size() 时,它会给出意想不到的结果
vector<int> v;
for(int i = 0; i < v.size() -1;++i){
printf("i = %d\n", i);
printf("v[i] = %d\n", v[i]);
}
由于向量的大小为0,它不应该打印任何东西,而是进入for循环并打印i = 0并给出分段错误。但它甚至不应该进入 for 循环,因为 v.size() - 1 是 -1。
为什么会这样?
【问题讨论】:
-
别忘了向量是从 empty 开始的。空向量中的所有和任何索引都将超出范围,因此导致undefined behavior。
-
是的,但关键是它甚至不应该进入循环,因为 vector.size() - 1, 是
-1 -
在一个不相关的说明中,你为什么在 C++ 中使用
printf?为什么不std::cout? -
@Someprogrammerdude 因为当它给出分段错误时它不显示 cout 的内容
标签: c++ vector error-handling segmentation-fault