Предположим, у меня есть:
class Intersection {
public:
int street;
int avenue;
double x;
double y;
double green[2]; // Light green times for STREET & AVENUE
list <class Road_Segment *> adj;
double best_time;
class Road_Segment *backedge;
multimap <double, Intersection *>::iterator bfsq_ptr;
};
И в моей основной функции у меня есть двумерный вектор:
vector<vector<Intersection *> > vvin ;
vector<vector<Intersection *> >::iterator vvit ;
И я получаю к нему доступ:
for (lit = City_Map::all.begin() ; lit != City_Map::all.end() ; lit++ ) {
inter = *lit ;
s = inter->street ;
a = inter->avenue ;
vvin[s][a] = inter ;
}
Где горит итератор списка, содержащий все классы. У меня сложность , доступ к 2-му вектору через целочисленный индекс, кое-что из того, что я знаю, я делал в прошлом. Программа сегментирована именно по этой линии. Есть идеи почему?
Кроме того, даже
cout << vvin[i][j] << endl ; // or for that matter[0][0] or [1][1] or whatever
segfaults, так что я знаю, что это не назначение указателя.
Если я не могу получить к нему доступ через целочисленный индекс, есть ли способ использовать итераторы таким же образом, чтобы я мог обращаться к нему как к двумерному массиву?
Пожалуйста и спасибо.