Я использую 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' - это вектор'> '. Тогда 'ar [u]' является 'vector ' (один меньше 'vector'), а 'ar [u] .begin()' is 'vector :: iterator'. –