没有匹配的函数可以在下面的程序中调用

时间:2019-06-30 06:47:38

标签: c++

我正在研究一个程序,以尽可能找到拓扑顺序,但是当我执行以下程序时,我得到了错误 由于没有匹配的函数调用,我不太擅长使用oops概念,我在findOrder函数中提到过 出现错误的评论

我正在解决这个问题course schedule

class Solution {
public:
    vector<int> findOrder(int n, vector<vector<int>>& pa) {
        vector<int> g[n];
        for(auto p : pa){
            int u = p[1],v = p[0];
            g[u].push_back(v);
        }
        vector<bool>visited(n,false);
        vector<bool>instack(n,false);
        vector<int>order;
        for(int i=0;i<n;i++){
            if(!visited[i]){
                if(!dfs(i,visited,instack,g,order))return {};//getting error here
            }
        }
        reverse(order.begin(),order.end());
        return order;




    }


    bool dfs(int x,vector<int> &visited,vector<int> &instack,vector<int> g[],vector<int>order){
        instack[x]=true;
        visited[x]=true;
        for(int i=0;i<g[x].size();i++){
            if(instack[g[x][i]]==true)return false;
            else if(!visited[g[x][i]] && !dfs(g[x][i],visited,instack,g))return false;
        }
        instack[x]=false;
        order.push_back(x);
        return true;
    }

};

1 个答案:

答案 0 :(得分:4)

在函数cannot read property 'navigate' of undefined 的原型中,您已经将参数dfsinstack定义为visited,但是您在其中提供了类型为vector<int>的变量调用函数。

最简单的方法可能就是更改:

vector<bool>

进入

bool dfs(int x,vector<int> &visited,vector<int> &instack,vector<int> g[],vector<int>order)

之所以会这样,是因为bool dfs(int x,vector<bool> &visited,vector<bool> &instack,vector<int> g[],vector<int>order) 是模板类,并且未定义vectorvector<int>的隐式转换。