これは初心者のような感じですが、わかりません。私はstd :: vectorの項目を繰り返し処理したい。現在、私はこのループを使用します。ループが原因でシステムエラーが発生する
for (unsigned int i = 0; i < buffer.size(); i++) {
myclass* var = buffer.at(i);
[...]
}
はしかし、私は実際には逆の順序でそれを反復処理したいことを実現:最後に始まり、0に自分の道を働いだから私はこのイテレータを使用してみました:
for (unsigned int i = buffer.size()-1; i >= 0; i--) {
myclass* var = buffer.at(i);
[...]
}
しかし、単に古い行を新しい(そしてもちろん再コンパイルした)行に置き換えるだけで、適切に実行されてコードを繰り返し実行するので、プログラムはこの行に最初に衝突したときにプログラムをクラッシュさせ、このエラーは
http://i43.tinypic.com/20sinlw.png
"[プログラム]が動作を停止しました"ダイアログボックスの後に続きます。
また、Code:Blocksに従って、プログラムは終了コード3を返します(this articleと思われる場合)。ERROR_PATH_NOT_FOUND:指定されたファイルが見つかりません。
アドバイスはありますか?私のforループに何か不足していると思いますか?多分何らかのメモリ問題を引き起こしていますか? 3のリターンコード、または記事は誤解を招くものであり、実際には「パスが見つかりません」という意味ではありませんか?
まず、デバッガで実行してみましたか?クラッシュの正確な位置を特定するのに役立ちます。また、何が起こっているのかも知るために変数を調べることができます。第2に、第2のループでは、サイズがゼロよりも大きいか? –
'unsigned int'インデックスで-1にアクセスするには? '2 ** 32-1'のようにもっとアクセスしています。 – Kaz
リラックスしてイテレータを使用してください... –