环形相等 count_if unique, sort, nth_element, reverse解决方法

环形相等 count_if unique, sort, nth_element, reverse
如题://写一个函数 可以判断两个数组是否环型相等 环型相等指的是1,3,2 和 2,1,3相等注意效率。//
问题是这样的:我写的代码可以实现,但是效率太差太差了。师傅说让用stl 里的这几个函数count_if,unique,  sort, nth_element,  reverse就可以很简单地实现。我把这几个函数想了好几遍,还是实现不了,恳请高人给点思路,感激不尽!!!
我的代码如下:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include<iostream> 
#include<cstdlib>
#include<string> 
#include<vector> 
using namespace std; 
  
int main() 

    int count(0); 
int j=0;
    vector<int> num1;  
    vector<int> num2; 
    vector<int> num3; 
    vector<int> temp; 
    char m,n; 
    cout<<"请输入数组1数据(0表示结束):"<<endl; 
    while(cin>>n) 
    { 
        if(n=='0') 
            break; 
        num1.push_back(n);       
    } 
    num3=num1; 
    cout<<"请输入数组2数据(0表示结束):"<<endl; 
    while(cin>>m) 
    { 
        if(m=='0') 
            break; 
        num2.push_back(m); 
        //..... 
    } 
     if(num1.size()!=num2.size())  
     { 
        cout<<"两数组不环形相等"<<endl; 
    } 
    else  
    { 
        for(vector<int>::iterator iter=num1.begin();iter!=num1.end();iter++)         { 
            vector<int>::iterator iter1=num3.begin(); 
            *iter1=*iter; 
            if(*iter!=num2[0]) 
            {   
                temp.push_back(*iter); 
                num3.erase(iter1); 
j++;
            } 
            if(num3.empty()||j==(num1.size()-1))             
            {  
                cout<<"两数组不环形相等"<<endl; 
                break; 
            }