Это поставило меня в тупик на несколько часов, так как я не вижу проблем в математике или коде.(Несмотря на то, что я смотрю на него и разрабатываю его снова и снова, чтобы быть уверенным.) Я надеюсь, что вы, ребята, можете мне помочь, вот мой код:
#define SOLVE_POSITION(x, y, z) ( z*16 + y*4 + x )
std::bitset<64> block;
block.reset();
for(int z = 0; z < 4; ++z){
for(int y = 0; y < 4; ++y){
for(int x = 0; x < 4; ++x){
if(block.at(SOLVE_POSITION(3-x, y, 3-z))){ //<-- call to at() throws 'out_of_range'
// do stuff
};
};
};
};
С z
равным 0, дваВнутренние большинство циклов for работают полностью (в общей сложности 16 проходов). Однако, когда z
становится 1, то исключение выдается из std :: bitset <64> :: at ().
Значения z
, y
, x
соответственно 1
, 0
, 0
в данный момент.
Можете ли вы сказать мне, что происходит здесь, чтобы вызватьэто исключение?Заранее спасибо!