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