【发布时间】:2011-09-24 04:27:56
【问题描述】:
这让我困惑了几个小时,因为我在数学或代码中看不到任何问题。 (尽管盯着它并一遍又一遍地解决它以确保。)我希望你们能帮助我,这是我的代码:
#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 中抛出异常::at().
此时z、y、x的值分别为1、0、0。
你能告诉我这里发生了什么导致这个异常吗? 提前致谢!
【问题讨论】:
标签: c++ algorithm debugging exception stl