0
我使用vector<vector<pair<long long,long long>>> ar;
现在我想使用它的迭代器,并当我声明为vector<vector<pair<long long,long long> > > :: iterator i;
其表示编译错误,是否有任何其他方法来定义这个迭代器? 我的代码是迭代用于向量<矢量<对<长长,长长>>>
#include<bits/stdc++.h>
using namespace std;
void dijkstra(vector<vector<pair<long long,long long>>> &ar,long long a,vector<long long> &distance){
set<pair<long long,long long>> br;
br.insert(make_pair(a,0));
distance[a]=0;
while(!br.empty()){
set<pair<long long,long long>> :: iterator z=br.begin();
long long u=z->first;
br.erase(z);
for(vector<vector<pair<long long,long long> > > :: iterator i=ar[u].begin();i<ar[u].end();i++){
long long v=i->first;
long long wt=i->second;
if(distance[v]>distance[u]+wt){
if(distance[v]!=100000000){
br.erase(br.find(pair<long long,long long>(v,distance[v])));
}
distance[v]=distance[u]+wt;
br.insert(pair<int,int>(v,distance[v]));
}
}
}
}
也许使用'auto'? –
在代码的很多地方,你写了“>>>”而不是“>>>”,导致编译错误。此外,如果您在帖子中添加编译错误,它可能很有用。 –
'ar'是'vector>'。然后'ar [u]'是一个'vector '(少一个'vector's),'ar [u] .begin()'是'vector :: iterator'。 –