と仮定私が持っている:2Dベクターは、どのように参照するために
vector<vector<Intersection *> > vvin ;
vector<vector<Intersection *> >::iterator vvit ;
そして、私はそのようにアクセスしています:
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;
};
そして、私の主な機能には、私はの2Dベクトルを持っている
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
セグメンテーション違反ので、私はそれがポインタ代入ではありません知っています。
整数インデックスを使ってアクセスできない場合は、同じ方法でイテレータを使用する方法があるので、2次元配列のようにアクセスできますか?
お願いしてありがとうございます。
あなたのベクターはおそらく空であり、範囲外のデータにアクセスしています。 – Pubby
nah、vvin.resize(100)を実行してもsegfaultedしました。 .push_back(inter)を使用する必要があります。私が望んでいたものではない。 – FatAdama
両方のディメンションのサイズを変更しましたか? – Pubby