c++ 使用vector报错

报错
43ERROR: AddressSanitizer: negative-size-param: (size=-8)
,是不可以这样使用吗?

//删除数组中重复元素
for(vector<int>::iterator it1=nums.begin();it1 !=nums.end();it1++)
        {
            for(vector<int>::iterator it2=nums.begin();it2 !=nums.end();it2++)
            {
                if(*it1 == *it2)
                nums.erase(it2) ;
                
            }
        }
   //计算数组长度
    
              for(vector<int>::iterator it=nums.begin();it !=nums.end();it++)
              {
                  length++;
                  
              }
            
               
    
        return length;
    } 
  

nums.erase(it2) ;
用erase的话,建议用while循环。
这样试试

vector<int>::iterator it2=nums.begin();
while(it2 !=nums.end())
{
       if(*it1 == *it2)
       {
            vector<int>::iterator it = it2++;
            nums.erase(it) ;
        }       
}

或者这样:

for(vector<int>::iterator it2=nums.begin();it2 !=nums.end();it2++)
            {
                if(*it1 == *it2)
                {
                    vector<int>::iterator it = it2;
                    nums.erase(it) ;
                
            }