多达10亿个对象?我什至可以使用Vector吗?

问题描述

我遇到一个问题,告诉我用户最多可以输入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对象。该对象被复制到我的“最近”位置对象中。没有复制的任何对象在超出范围时会被销毁,对吗?
因此,我通过在相同的内存位置创建一个新对象,然后将其移动到作用域之外的另一个内存位置来重用相同的变量?

  1. 对这样的事情正确的方法是什么?
  2. 我的理解是否正确?还是我感到困惑?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...