2015-06-29 2 views
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])); 
      } 
     } 
    } 
} 
+4

Возможно использование 'auto'? –

+0

Во многих местах вашего кода вы написали «>>>» вместо «>>>», что вызывает ошибку компиляции. Кроме того, может быть полезно, если вы добавите ошибку компиляции в свой пост. –

+0

'ar' - это вектор' > '. Тогда 'ar [u]' является 'vector ' (один меньше 'vector'), а 'ar [u] .begin()' is 'vector :: iterator'. –

ответ

0

одна возможная ошибка может быть вам присвоены vector<pair<long long, long long> > к vector<vector<pair<long long,long long> > > итератор с. Это приведет к ошибке компиляции.

Смежные вопросы