c++ - 如何传递向量>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);
}
解决方案
void short(vector<pair<long,long> >adj[], int n){
将函数重命名short
为其他名称。short
是 C++ 基本类型。您不能将其用作标识符的名称。
(最初发布为问题下的评论。根据此添加它作为答案)
推荐阅读
- css - 如何将背景图片添加到 html 电子邮件的正文中?
- java - 如何根据 JsonArray 中的键值过滤列表
- nexus3 - 搜索不适用于 nexus-repository 柯南
- sql-server - 错误“提供给内置函数 todatetimeoffset 的时区无效。”
- sql-server - 使用 SQL Server 每周计算日期列表
- reticulate - 加载网状库挂起后调用 py_config()
- python - 熊猫数据框乘法/公式底行到顶行
- c# - 我想知道Physics Pang Game 在Ball Bounce 中使用什么
- sql - 相同的数据类型,不同的数据行为
- django - 如果 form.is_valid() 如何测试重定向