增加地图的价值

时间:2016-04-05 14:09:49

标签: c++ dictionary

如果你能快速帮助我,需要你的帮助和更好。这是一个非常微不足道的问题,但仍然无法理解我需要将其放在一行中。

以下代码

for (busRequest = apointCollection.begin(); busRequest != apointCollection.end(); busRequest++)
{
    double Min = DBL_MAX;
    int station = 0;

    for (int i = 0; i < newStations; i++)
    {

        distance = sqrt(pow((apointCollection2[i].x - busRequest->x1), 2) + pow((apointCollection2[i].y - busRequest->y1), 2));
        if (distance < Min)
        {
            Min = distance;
            station = i;

        }
    }

    if (people.find(station) == people.end())
    {
        people.insert(pair<int, int>(station, i));
    }

    else
    {
        how can i increment "i" if the key of my statation is already in the map.
    }

}

简单地说一下我做了什么,我把第一个busrequest转到第二个循环,然后到第一个站点找到最小距离。在我浏览了第二个循环后,我添加了与我的地图距离最小的那个站。继续我所有的循环之后,如果有相同的站点,我需要增加它,所以这意味着该站点正在使用两次等等。

我需要帮助,只需给我提示或提供我需要添加的行。

我提前感谢你,等待你的帮助。

2 个答案:

答案 0 :(得分:1)

我认为你的意思是Min Distance而不是i?检查并告诉我。

for (busRequest = apointCollection.begin(); busRequest != apointCollection.end(); busRequest++)
{
    double Min = DBL_MAX;
    int station = 0;

    for (int i = 0; i < newStations; i++)
    {

        distance = sqrt(pow((apointCollection2[i].x - busRequest->x1), 2) + pow((apointCollection2[i].y - busRequest->y1), 2));
        if (distance < Min)
        {
            Min = distance;
            station = i;

        }
    }

    if (people.find(station) == people.end())
    {
        people.insert(pair<int, int>(station, i)); // here???
    }

    else
    {
        // This routine will increment the value if the key already exists. If it doesn't exist it will create it for you
        YourMap[YourKey]++;
    }

}

答案 1 :(得分:0)

在C ++中,您可以直接访问地图密钥而无需插入地图密钥。 C ++将使用默认值自动创建它。 在您的情况下,如果station地图中没有people,您将访问people[station],则people[station]将自动设置为0(默认值为int为0)。

所以你可以这样做:

if (people[station] == 0)
{
    // Do something
    people[station] = station; // NOTE: i is not accessible here! check ur logic
}
else
{
    people[station]++;
}


另外:在您的代码中i无法在IF条件下访问以插入人员地图。