int main(int argc, const char * argv[]) {
vector<int> num(2,0);
cout<<num[7]<<endl;
return 0;
}
这段代码中明明num的下标已经越界了,为什么还能够运行,而且输出的结果是0,而当输出num[8]的时候就是一个很大的数字了?
c++中vector下标的问题
答案:1 悬赏:60 手机版
解决时间 2021-03-10 05:22
- 提问者网友:蔚蓝的太阳
- 2021-03-09 17:23
最佳答案
- 五星知识达人网友:蓝房子
- 2021-03-09 18:36
vector越界是未定义行为,行为可能会因为编译器或机器的改变而改变,可能下一次运行就不是这个值了。在vs中,越界会跳转到此并中断程序
#if _ITERATOR_DEBUG_LEVEL == 2
if (size() <= _Pos)
{ // report error
_DEBUG_ERROR("vector subscript out of range");
_SCL_SECURE_OUT_OF_RANGE;
}
#if _ITERATOR_DEBUG_LEVEL == 2
if (size() <= _Pos)
{ // report error
_DEBUG_ERROR("vector subscript out of range");
_SCL_SECURE_OUT_OF_RANGE;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯