容器的size() 返回的是size_t 而size_t在32位的机子上是unsigned int,在64位上是unsigned long。总而言之都是unsigned,而一个算术表达式既有无符号数又有有符号数(比如int),就会把有符号数变为无符号数再进行操作,所以假如有以下情况发生一个unsigned - 一个int = 负数 (实际值是 数值总数+那个负数)
比如
vector<int> res;
cout<<res.size()-1; // 2的32次方-1 = 4294967295
所以对于容器的size() 后面千万不要跟一个减去一个数的操作 (最好size()后面就别跟加减了)
e.g. 之前出错的一个代码
if(vec.size()-1 < len)
可以改成 if(vec.size()< len+1)
或者(int)vec.size() 也是种思路把