Guest User

Untitled

a guest
Jan 4th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.97 KB | None | 0 0
  1. // Tarkistetaan onko mapissa jo ennestään nykyinen avainkaupunki.
  2.         ulkoiter = kaupunkidata.find(avainkaupunki);
  3.        
  4.         // Skenaario 1: Avainkaupunkia ei ole vielä olemassa, joten
  5.         // tehdään kokonaan uusi tietoalkio.
  6.         if (ulkoiter == kaupunkidata.end()) {
  7.        
  8.             // Sijoitetaan kohdekaupunki ja välimatka tietoparina sisämappiin,
  9.             // joka vastaavasti sijoitetaan avaimen kanssa ulkomappiin.
  10.             kohdedata.clear();            
  11.             kohdedata.insert(make_pair(kohdekaupunki, valimatka));
  12.             kaupunkidata.insert(make_pair(avainkaupunki, kohdedata));
  13.            
  14.             // Tämän jälkeen täytyy huomioida, että mappihässäkkä vaatii myös
  15.             // vastaavan tietoparin niin, että kohteesta tulee avain ja
  16.             // avaimesta kohde. Tarvitaan siis vastasijoitus.
  17.             kohdedata.clear();
  18.             kohdedata.insert(make_pair(avainkaupunki, valimatka));
  19.             kaupunkidata.insert(make_pair(kohdekaupunki, kohdedata));
  20.             cout << "---Vastasijoitus, avainta ei löytynyt---" << endl;
  21.             cout << endl;
  22.            
  23.             // Nyt meillä pitäisi olla rakenteessa näin:
  24.             // Avain
  25.             //     Kohde Välimatka
  26.             // Kohde
  27.             //     Avain Välimatka
  28.            
  29.         }
  30.          
  31.         // Skenaario 2.1: Avain on, kohde on. Aiheutuu virhe.
  32.         else if ( (*ulkoiter).second.find(kohdekaupunki) !=
  33.                   (*ulkoiter).second.end() ) {
  34.                  
  35.             return KAUPUNKIPARI_2X;
  36.                  
  37.         }
  38.        
  39.         // Skenaario 2.2: Avain on, kohdetta ei.
  40.         else if (ulkoiter != kaupunkidata.end()) {
  41.            
  42.             kohdedata.clear();
  43.             (*ulkoiter).second.insert(make_pair(kohdekaupunki, valimatka));
  44.                
  45.             // Skenaariota 1 vastaavasti tarvitaan myös vastasijoitus.
  46.             // Etsitään kohdetta avainten joukosta.
  47.             ulkoiter = kaupunkidata.find(kohdekaupunki);
  48.            
  49.             // Mikäli ei löytynyt, niin tehdään uusi pari.
  50.             if (ulkoiter == kaupunkidata.end()) {
  51.            
  52.                 kohdedata.clear();
  53.                 kohdedata.insert(make_pair(avainkaupunki, valimatka));
  54.                 kaupunkidata.insert(make_pair(kohdekaupunki, kohdedata));
  55.                 cout << "---Vastasijoitus, avain on, kohdetta ei---" << endl;
  56.                 cout << endl;
  57.                
  58.             }
  59.                
  60.             // Mikäli löytyy, niin lisätään vain avainkaupunki kohteeksi.
  61.             else if (ulkoiter != kaupunkidata.end()) {
  62.            
  63.                 kohdedata.clear();
  64.                 (*ulkoiter).second.insert(make_pair(kohdekaupunki,
  65.                                                     valimatka));
  66.                 cout << "---Vastasijoitus, avain on, kohde on---" << endl;
  67.                 cout << endl;
  68.            
  69.             }
  70.         }
Add Comment
Please, Sign In to add comment