我正在努力实现一种分而治之的算法,该算法找到彼此最接近的两个点以及它们之间的距离 . 我的最终解决方案找到了正确的答案(与使用蛮力相比),但大约1/3的时间会返回分段错误错误 . 我一直在努力解决这个问题几天,在这里和那里添加打印语句,但找不到问题 . 如果有人看了我的代码,我将不胜感激 .
您的"divide"循环假定 X 和 Y 具有相同数量的元素 . 如果 Y 少于 X ,您将遇到未定义的行为,这可能是有趣的结果或崩溃 .
X
Y
尝试更改向量的访问方法 . 向量下标运算符似乎在某些编译器/平台中具有一种非常的行为(至少从我的角度来看) . 我认为问题来自于它是一个链表,导致内存中不连续,但这只是猜测 . (编辑:std :: vector在内存中是连续的,问题是别的)尝试使用迭代器(轻松与 auto 关键字),例如:
auto
for (auto iter = Yprime.begin(); iter != Yprime.end(); iter++) { // Your code here }
希望这适用于您的情况!
2 回答
您的"divide"循环假定
X
和Y
具有相同数量的元素 . 如果Y
少于X
,您将遇到未定义的行为,这可能是有趣的结果或崩溃 .尝试更改向量的访问方法 . 向量下标运算符似乎在某些编译器/平台中具有一种非常的行为(至少从我的角度来看) . 我认为问题来自于它是一个链表,导致内存中不连续,但这只是猜测 . (编辑:std :: vector在内存中是连续的,问题是别的)尝试使用迭代器(轻松与
auto
关键字),例如:希望这适用于您的情况!