大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
int main(){
vector<int> ivec(10);
cout<<ivec[0]<<endl;
cout<<ivec[100]<endl;}
- vector中包含三个迭代器:first迭代器指向第一个元素;finish迭代器指向最后一个有效元素的下一个位置;end_of_storage迭代器指向整个vector空间末尾的下一个位置。访问vector中的成员都是通过这三个迭代器实现的。
- 通过下标访问vector中的元素时不会做边界检查,即便下标越界。也就是说,下标与first迭代器相加的结果超过了finish迭代器的位置,程序也不会报错,而是返回这个地址中存储的值。
- 第一行代码没有任何问题,输出首元素的值。虽然第二行代码逻辑上有问题,属于典型的越界访问,但是程序仍然会编译通过并输出对应地址的值。
- 如果想在访问vector中的元素时首先进行边界检查,可以使用vector中的at函数。通过使用at函数不但可以通过下标访问vector中的元素,而且在at函数内部会对下标进行边界检查。
- 综上所述,程序编译通过并正常运行,首选输出first迭代器对应地址中的值,然后再输出first+100对应地址的值。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186923.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...