如果你能快速帮助我,需要你的帮助和更好。这是一个非常微不足道的问题,但仍然无法理解我需要将其放在一行中。
以下代码
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转到第二个循环,然后到第一个站点找到最小距离。在我浏览了第二个循环后,我添加了与我的地图距离最小的那个站。继续我所有的循环之后,如果有相同的站点,我需要增加它,所以这意味着该站点正在使用两次等等。
我需要帮助,只需给我提示或提供我需要添加的行。
我提前感谢你,等待你的帮助。
答案 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条件下访问以插入人员地图。