问题描述
我遇到一个问题,告诉我用户最多可以输入10亿个位置。然后,我使用haversine计算距离并找到最接近起始位置的位置。
通常,我只使用向量容器,甚至动态分配内存即可。但是,这10亿美元真的让我失望了,我不知道如何最好地应对它。
我想只是循环创建一个对象并将其复制到另一个对象。这似乎适用于一些有限的测试。我尚未为此部分构建任何单元测试。我认为最好问一下我是否正确地理解了事情。
**忽略我奇怪的名字间距东西...我在胡闹。我编写的距离和类/功能都正常/按预期工作。
#include "Location.h"
#include "UserInput.h"
#include "distanceCalculator.h"
int main()
{
locationnamespace::Location farthest,closest;
//returns location object from getting input
locationnamespace::Location startLocation = getLocationinput();
int totalLocations = getTotalLocations();
for (int i = 0; i < totalLocations; i++){
locationnamespace::Location endLocation = getLocationinput();
std::cout << endLocation.toString();
if (i==0){
closest = endLocation;
farthest = endLocation;
}
//returns true if endLocation is closer than the closest.
if(isCloser(startLocation,endLocation,closest)){
closest = endLocation;
}
}
std::cout << "Closest: " << closest.toString();
return 0;
}
如果我正确理解这一点,则endLocation的变量在堆栈上始终具有相同的内存地址。然后,我在循环中创建一个Location对象。该对象被复制到我的“最近”位置对象中。没有复制的任何对象在超出范围时会被销毁,对吗?
因此,我通过在相同的内存位置创建一个新对象,然后将其移动到作用域之外的另一个内存位置来重用相同的变量?
- 对这样的事情正确的方法是什么?
- 我的理解是否正确?还是我感到困惑?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)