永发信息网

c++中vector下标的问题

答案:1  悬赏:60  手机版
解决时间 2021-03-10 05:22
  • 提问者网友:蔚蓝的太阳
  • 2021-03-09 17:23
int main(int argc, const char * argv[]) {

vector<int> num(2,0);

cout<<num[7]<<endl;

return 0;

}
这段代码中明明num的下标已经越界了,为什么还能够运行,而且输出的结果是0,而当输出num[8]的时候就是一个很大的数字了?
最佳答案
  • 五星知识达人网友:蓝房子
  • 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;
    }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯