int numberOfArithmeticSlices(vector<int>& nums) { //当传入的 nums = {1} 时; cout << "nums.size()= " << nums.size() << endl; cout << "nums.size()-2 = " << nums.size()-2 << endl; //当结果计算<0 时 这个数很大 4294967295 ,导致下列循环很大,具体原因如下: int n_lenth = nums.size(); cout << n_lenth -2 << endl; for(int j = 0 ; j < n_lenth - 2;j++){ cout << "j= " << j << endl; } for(int i = 0 ; i < nums.size() - 2;i++){ // 此时,nums.size()-2 为一个很大的值 4294967295 if(i > 3) break; cout << "i= " << i << endl; } return 0; }
查看 STL 的源码
// [23.2.4.2] capacity /** Returns the number of elements in the %vector. */ size_type size() const _GLIBCXX_NOEXCEPT { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } /** Returns the size() of the largest possible %vector. */ size_type max_size() const _GLIBCXX_NOEXCEPT { return _S_max_size(_M_get_Tp_allocator()); } long unsigned int = unsigned long int typedef size_t size_type; typedef __SIZE_TYPE__ size_t; #define __SIZE_TYPE__ long unsigned int