- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这已经困扰了我几个小时,因为我看不出数学或代码中有任何问题。 (尽管盯着它并一遍又一遍地确定它。)我希望你们能帮助我,这是我的代码:
#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
那一刻。
你能告诉我这里发生了什么导致这个异常吗?提前致谢!
最佳答案
宏!你必须非常小心:
您定义:
#define SOLVE_POSITION(x, y, z) ( z*16 + y*4 + x )
所以当你这样做的时候:
SOLVE_POSITION(3-x, y, 3-z)
它扩展为:
( 3-x*16 + y*4 + 3-z )
并且由于运算符优先级,3-x*16
将不正确!你需要做的:
#define SOLVE_POSITION(x, y, z) ( (z)*16 + (y)*4 + (x) )
以便它正确扩展为:
( (3-x)*16 + (y)*4 + (3-z) )
正如预期的那样。
关于c++ - 为什么 std::bitset::at() 抛出 out_of_range?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537022/
这段代码是关于将字符串转换为替代密码(将特定字母替换为另一个特定字母,例如:用'E'代替'a')当我输入字符串时,它可以正常工作。但是,当我输入一个句子时,它说“在抛出一瞬间'std::out_of_
我编写了一个对字符串进行百分号编码的函数,如下所示: string percent_encode(string str) { string reserved = // gen-delims
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我有一个非常简单的程序,可以将十六进制字符串转换为它的 int 值。代码看起来不错,但会引发运行时错误: terminate called after throwing an instance of
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在尝试制作一个基本的计算器,用户可以在其中输入 2 个数字和一个运算符,然后计算就可以进行了。我不明白为什么我会收到这个错误,我也不完全确定这个错误是什么意思,因为我是 c++ 的新手,只有一些
给定一个包含 ASCII 码和相应数值的全局 vector list 以及一个字符串,例如 000.00-000.0.0.0,此函数接受一个输入 token strings 2-char or 3-c
嗨,我正在点击 std::out_of_range: basic_string::substr在下面的代码中。一直在努力修复它,但无法完成。 std::string orig_str = "1-1,2
目前在 uni 做一个项目,起初我需要取消字符串的连字符,看起来很简单但是当我运行程序时它有一个错误 WeirdPuncProgram.exe: Microsoft C++ exception: st
下面是发生这个错误的函数: std::string DataTranslation::getMeshName(std::string meshLink) { File input(this->
我正在处理一个包含行链接列表的文件,每个节点如下所示: struct TextLine{ //The actual text string text; //The line n
我在 IDE 输出日志中收到此异常消息,即使我有一个代码可以捕获它,如果它发生的话。 这是代码本身: t_ptr obj_ptr; try { obj_ptr = _objects.at(fi
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我有以下代码来读取文本文件。 const string FILENAME = PACKAGES_DIR + pname; //the arguments to ifstream is a cstr
这个问题在这里已经有了答案: Why does std::getline() skip input after a formatted extraction? (5 个答案) 关闭 6 年前。 in
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在 Linux Ubuntu 的 opencv 中编写以下代码。x_captured 和 y_captured 是“int”类型的 vector 。两个 vector 的大小都是 18。 for
我正在尝试编写一个简单的链表,并在用户需要超出范围的节点索引时尝试抛出 out_of_range 异常。但是,当我编译源文件时,出现错误“‘out_of_range’不是‘std’的成员”。 我的理解
考虑以下无法编译的代码: #include //#include // uncommenting this works int main() { std::map test; t
// The following code works fine, throwing a std::out_of_range exception: std::vector vd{ 1.
我是一名优秀的程序员,十分优秀!