sort函数的自定义排序函数如何调用函数外的容器

力扣1122题,题解把sort函数的自定义排序规则写在主函数里了,不知道有没有办法能把它写在主函数外面。
下面贴的代码力扣不认,我写的这个rule函数为什么不认map容器呢?我应该怎么解决这个问题呢?
另外,力扣给的编辑环境就是一个class嘛,按道理讲公共的成员函数调用私有的成员是不应该有阻碍地呀?

class Solution {
public:
    static bool rule(int x,int y)
    {
        if(Ium.count(x))
        {
            if(Ium.count(y))
                return Ium[x]<Ium[y];
            return 1;
        }
        if(Ium.count(y))
            return 0;
        return x<y;
    }
    vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2)
    {
        int k=0;
        for(auto v:arr2)
            Ium[v]=k++;
        cout<<Ium.size();
        sort(arr1.begin(),arr1.end(),rule);
        return arr1;
    }
private:
    unordered_map<int,int> Ium;
};

你这个public函数是 static 的,不能调非static 成员

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^