for(int i=0;i<arr.size()-1;++i)
数组,想单独处理最后一个,所以i<size()-1,循环外处理最后一个
考虑了数组为空,想着0<-1也没毛病
但是测试提示越界
cout<<arr.size()-1是一个很大的数字
搜了波,https://blog.youkuaiyun.com/zhaohaibo_/article/details/86652112
划重点:STL中的size(),是一个无符号整形变量(unsigned int),在于其他数做运算时,会把其他数字强制转换为无符号整形。
所以,unsigned int(-1)的值是最大的unsigned int,即4294967295
所以,i+1<arr.size()即可

本文深入探讨了使用STL容器时,size()函数返回无符号整型导致的潜在数组越界问题。通过一个具体示例,解释了当循环条件设置不当时,如何引起越界错误,并提供了正确的循环终止条件。文章还链接了一篇详细的技术博文,进一步阐述了unsigned int类型在比较运算中可能带来的误区。
1376

被折叠的 条评论
为什么被折叠?



