2011-07-18 16 views
0
for (i = (routeVector.size() - 1); i >= 0; i--) 
    { 
     cout << "Connected to -> " << routeVector[i].exitPoint; 
     for (j = (routeVector.size() - 1); j >= 0; j--) 
     { 
      if (routeVector[i].selectedBranchesVector.size() > 0) 
      { 
       cout << "\n: routeVector[i].selectedBranchesVector[0].connectedExitPoint" << 
routeVector[i].selectedBranchesVector[0].connectedExitPoint; 

       ******cout << "\nrouteVector[j].exitPoint:" << routeVector[j].exitPoint; 
       if (routeVector[i].selectedBranchesVector[0].connectedExitPoint == routeVector[j].exitPoint) 
       { 
        cout << "Connected to -> " << routeVector[i].selectedBranchesVector[0].connectedExitPoint; 
       } 
      } 
     } 
    } 

私はセグメンテーションフォールトを与えています。 「routeVectorは」「selectedBranchesVector」に何も持っていなかった場合は論理エラー:セグメンテーションフォルトの原因を特定できません。

は、それがあれば内部にさえ達していないでしょう。

上記の問題の原因は何ですか?

EDIT 1:

問題をより明確にするために、私は文の二つの条件をプリントアウトし、エラーを見つめていたラインに表示されます。

構造体である:これはijの種類に依存している

typedef struct branch 
{ 
    unsigned int distance; 
    int   connectedExitPoint; 
} branch; 

typedef struct route 
{ 
    int exitPoint; 
    vector <branch> selectedBranchesVector; 
} route; 

vector <route> routeVector; 
+1

exitPointとconnectedExitPointメンバーのタイプは何ですか? クラスであれば、問題はそのoperator ==()関数にもある可能性があります。 – SKi

+0

@ User1コードを修正しました。上記を参照してください。 –

+2

iとjのタイプは何ですか?型が符号なしで、 'routeVector'が空の場合、'(routeVector.size() - 1) 'は正の値になります。 – SKi

答えて

1

- 何が起こっているか、おそらくです - ijunsignedであれば、上記のループは非常に喜んで戻って周りのループます - インデックスを印刷すると...

+0

...セグメンテーションフォルトの理由は、プログラムが境界外のルートベクトル要素にアクセスしているためです。 –

+0

@ニム確かに、それは問題でした、多くのありがとう。 iとjは 'unsigned int'でした。 –

関連する問題