c++这个怎么搞,快给人整麻了

随机产生一个有n个元素的数组,数组元素值为随机生成的1—n的正整数,一般来说,其中会有一些元素的值是重复的,也有些整数未出现在数组中,编写程序找出一维数组中重复出现在数组中的整数值是多少,重复了多少次(n由键盘输入,需要判断n的合法性)。(如,n=5,则随机生成一个数组的元素分别为{3,2,5,5,1},则输出为:重复的整数值为5,5重复了2次)

#include <iostream>
#include <cstdlib>
#include <vector>

using namespace std;

int random(int a,int b)
{
    return a+rand()%(b-a+1);
}

void getArray(vector<int> &v,int n)
{
    for(size_t i=0;i<n;++i)
    {
        v.push_back(random(0,n));    
    }
}

int findRepeatNumber(vector<int>& nums)
{
    if (nums.empty())
        return -1;
        
    for (int i = 0; i < nums.size(); ++i)
    {
        while (nums[i] != i)
        {
            if (nums[i] == nums[nums[i]])
                return nums[i];
            else
                swap(nums[i], nums[nums[i]]);
        }
    }

    return -1;
}
int main()
{
   int n=0;
   vector<int> v;
   cin>>n;
   getArray(v,n);
   for(size_t i=0;i<n;++i)
   {
        cout<<v[i];
   }
   cout<<"重复的数值:"<<findRepeatNumber(v);
   return 0;
}