0

私のコードの一部には、

a = cache[k1][k2][k3][k4];
cout << "DEBUG: " << a << " " << cache[k1][k2][k3][k4] << endl;

そして私のcoutは次の出力を持っています:

DEBUG: 38 38
DEBUG: 3 3
DEBUG: 37 37
DEBUG: 4 35 <- the problem

世界で何が起こっているのかわかりません。

a、k1、k2、k3、k4は整数で、キャッシュは

vector<vector<vector<vector<int> > > >
4

1 に答える 1

3

これが発生する可能性がある唯一の方法は、インデックスの1つが範囲外であり、ベクトルの外側にあるメモリにアクセスしている場合です。ベクトルメンバー関数atは、境界チェックを行うことを除いて、添え字演算子と同じように機能します。これを使用して、このエラーを検出します。

a = cache.at(k1).at(k2).at(k3).at(k4);
于 2012-11-25T04:38:02.827 に答える