Я написал следующий фрагмент кода, но он, похоже, не работает.Итерация над вектором пары
int main(){
int VCount, v1, v2;
pair<float, pair<int,int> > edge;
vector< pair<float, pair<int,int> > > edges;
float w;
cin >> VCount;
while(cin >> v1){
cin >> v2 >> w;
edge.first = w;
edge.second.first = v1;
edge.second.second = v2;
edges.push_back(edge);
}
sort(edges.begin(), edges.end());
for (vector < pair<float,pair<int,int>> >::const_iterator it = edges.begin() ; itt != edges.end; it++){
cout >> it.first;
}
return 0;
}
Это ошибка в строке, содержащей цикл. Ошибка:
error: no match for ‘operator<’ in ‘it < edges.std::vector<_Tp, _Alloc>::end [with _Tp = std::pair<float, std::pair<int, int> >, _Alloc = std::allocator<std::pair<float, std::pair<int, int> > >, std::vector<_Tp, _Alloc>::const_iterator = __gnu_cxx::__normal_iterator<const std::pair<float, std::pair<int, int> >*, std::vector<std::pair<float, std::pair<int, int> > > >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::const_pointer = const std::pair<float, std::pair<int, int> >*]
Может ли кто-нибудь помочь мне?
не должно быть, что 'это! = Edges.end() '? Я не вижу, чтобы 'itt' объявлялся где-то – EdChum
. Еще один дикий punt работает, если вы добавите пробел между вашими угловыми скобками в вашем цикле for:' vector>> :: const_iterator'? –
EdChum
@EdChum: проблема с прямоугольной скобой была решена с C++ 11 –