首页 > 解决方案 > 如何传递向量>v[]

问题描述

我正在尝试将 a 传递 vector<pair<long,long> > adj[n]给另一个名为 short 的函数,但它给了我错误,但我之前写过这样的代码,所以我不知道为什么现在会出现错误

错误:“adj”之前的声明符无效</p>

错误:在 'adj' 之前需要 ')'</p>

#include <bits/stdc++.h>
using namespace std;

  void short(vector<pair<long,long> >adj[], int n){
    vector<long>dist(n+1,INT_MAX);
    vector<long>parent(n+1, -1);
    dist[1] = 0;
    parent[1] = 1;
    priority_queue<pair<long,long>,vector<pair<long,long> >,greater<pair<long,long> > > pq;
    pq.push(mp(0,1));
    vector<bool>flag(n+1, false);
    while(!pq.empty()){
        long u = pq.top().S;
        pq.pop();
        flag[u] = true;
        for(auto it = adj[u].begin(); it!=adj[u].end(); it++){
            long v = (*it).F;
            long wt = (*it).S;
            if(!flag[v] && dist[u] +wt < dist[v]){
                dist[v] = dist[u]+wt;
                pq.push(mp(dist[v],v));
                parent[v] = u;
            }
        }
    }
    print(parent, 1);
}



int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    long n, m;
    cin >> n >> m;
    vector<pair<long,long> > adj[n+1];
    long u, v, w;
    loop(i,m){
        cin >> u >> v >> w;
        adj[u].pb(mp(v,w));
        adj[v].pb(mp(u,w));
    }
    short(adj,n);
}

标签: c++vectorc++14stdvector

解决方案


void short(vector<pair<long,long> >adj[], int n){

将函数重命名short为其他名称。short是 C++ 基本类型。您不能将其用作标识符的名称。

(最初发布为问题下的评论。根据此添加它作为答案)


推荐阅读