2016-04-05 14 views
-1

あなたの助けが必要です。それは非常に自明な問題ですが、私は1つの行に入れなければならないものをまだ理解できません。地図の値を増やしてください

次のコードは、私が何をすべきか

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番目のループを通過した後、私は私のマップに最小距離でその駅を追加します。私はすべてのループを進めて同じ駅があればそれを増やす必要があるので、その駅が2回などを使用していることを意味します。

私はちょっと助けが必要です。私はそれを追加する必要があります。

ご協力いただきありがとうございます。

+0

YourMap [YourKey] ++ –

+0

ありがとうございました!!!!あなたは私を大いに助けました! –

+0

:)私は助けてうれしい。私は答えにそれを記入してください答えとしてマークしてください。 –

答えて

1

iの代わりにMin Distanceを意味すると思いますか?確認し、私に知らせてください。

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]++; 
    } 

} 
+0

私はループの後に使用する場合は、最初のステップは、私にしてください教えて(オートは、それが(people.beginを=)!それを= people.end();それ++) \t { \t \t coutの<< it->最初の<< ";" << it->二<<てendl; \t} id 0にステーションの番号がある場合、このIDは以前使用していたステーションに対応していますか? –

+0

@mishaOstapchukオリジナルの投稿を編集します。新しいコード、新しい質問、新しいエラー(もしあれば)を入れて、私はここで答えます。私は最後に投稿した、私はそれがルールの外ですが、私は今日質問を投稿することはできません知っている、スタックオーバーフロー –

+0

のこのパターンに従ってください。 –

0

C++では、マップキーに直接アクセスすることはできません。 C++は自動的にデフォルト値で作成します。 あなたのケースでは、peopleマップにstationが存在せず、people[station]にアクセスすると、people[station]が自動的に0(デフォルト値はint)に設定されます。また

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



だから、ちょうどこの操作を行うことができ、人々の中に挿入するための条件をマップする場合、あなたのコードではiは、内部にアクセスすることはできません。

+0

私はint i = 1を最初のループの後に追加しました。ここでは、Min = dbl_maxを使用します。そして私の鍵は、最小距離を持つ駅に対応する必要があります。それは、もし私が駅番号75を持っているなら、それはこの駅が私の地図に再び現れるなら増やすべきであることを意味する –

+0

あなたはしなかった。私は少なくともあなたのコードでそれを見ることはできません。 –

+0

はいコードと一緒に送信しませんでした。そのために残念 –

関連する問題