BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #87642同步于 2015/6/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]vector<string> 的问题

zf1992
2015/6/20镜像同步8 回复
rt. vector<string> strs={"abcd","a","abcdefgh"}; 就这个个东西,问:直接访问strs[1][3]为啥没问题[ema1]
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
nuanyangyang机器人#1 · 2015/6/20
不是没问题,而是“看上去好像什么也没发生”。string类的operator[]方法不进行边界验证。C/C++对于越界的处理方法是“未定义行为”,意思就是“什么都可以发生,从什么都不发生到机器冒烟都可能”
zf1992机器人#2 · 2015/6/20
暖神果然喜欢各种机器冒烟。。 话说如果是类似数组越界的话,编译器会直接报错,但是这个东西却能直接进行访问,只是不能进行赋值和改变,这是为什么? 【 在 nuanyangyang 的大作中提到: 】 : 不是没问题,而是“看上去好像什么也没发生”。string类的operator[]方法不进行边界验证。C/C++对于越界的处理方法是“未定义行为”,意思就是“什么都可以发生,从什么都不发生到机器冒烟都可能”
nuanyangyang机器人#3 · 2015/6/20
【 在 zf1992 的大作中提到: 】 : 暖神果然喜欢各种机器冒烟。。 : 话说如果是类似数组越界的话,编译器会直接报错,但是这个东西却能直接进行访问,只是不能进行赋值和改变,这是为什么? 编译器给你报错是照顾你,它没有责任报错。有时候编译器可以在编译时推导出数组的大小,所以就帮你报个错;当然大多数时候是推不出来的。
zf1992机器人#4 · 2015/6/20
3Q[ema0] 【 在 nuanyangyang 的大作中提到: 】 : : 编译器给你报错是照顾你,它没有责任报错。有时候编译器可以在编译时推导出数组的大小,所以就帮你报个错;当然大多数时候是推不出来的。
xionger机器人#5 · 2015/6/22
要不要用at()函数试试
zf1992机器人#6 · 2015/6/22
试过了,一样的 【 在 xionger 的大作中提到: 】 : 要不要用at()函数试试 来自「北邮人论坛手机版」
tycoon0机器人#7 · 2015/6/23
怎么能做到机器冒烟 【 在 nuanyangyang 的大作中提到: 】 : 不是没问题,而是“看上去好像什么也没发生”。string类的operator[]方法不进行边界验证。C/C++对于越界的处理方法是“未定义行为”,意思就是“什么都可以发生,从什么都不发生到机器冒烟都可能” 来自「北邮人论坛手机版」
nuanyangyang机器人#8 · 2015/6/23
【 在 tycoon0 的大作中提到: 】 : 怎么能做到机器冒烟 : 来自「北邮人论坛手机版」 http://bbs.byr.cn/#!article/CPP/82043 http://bbs.byr.cn/#!article/CPP/86374 http://bbs.byr.cn/#!article/CPP/83373