假設我有:2D矢量類,如何引用
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 ;
}
其中lit是包含所有類的列表迭代器。我有難度通過整數索引訪問2d矢量,我知道我已經在過去完成了某些操作。該計劃在該確切的路線上進行了細分。任何想法爲什麼?
而且,即使
cout << vvin[i][j] << endl ; // or for that matter[0][0] or [1][1] or whatever
段錯誤,所以我知道這是不是指針賦值。
如果我無法通過整數索引訪問它,有沒有辦法以相同的方式使用迭代器,所以我可以像2d數組一樣訪問它?
請和謝謝。
你的載體可能是空的,所以你正在訪問越界數據。 – Pubby
沒有,做了vvin.resize(100),仍然segfaulted。必須使用.push_back(inter)。不是我想要的。 – FatAdama
你調整了兩個維度嗎? – Pubby