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