c++ Zagnieżdzanie dwóch pętli for, bardziej elegancko?

0

No więc mam taki oto krótki fragment kodu, gdzieś wewnątrz jednej funkcji:

  for(l=0; l > liczba_armii; l++)
     {
         for ( j=0; j>liczba_armiiOLD; j++)
         {
            
             if(armie[l].ID_armii==armieOLD[j].ID_armii)
             {
                  k=1; //jeśli znajdzie identyczna armie
             }
         }
         
         if(k==0) //jeśli znalazl identyczna armie k jest ustawione na 1, wiec nie wejdzie do if'a
         {
              //   cout<<"TADA"<<endl;
                armieOLD[l].wypisz();
         } 
         k=0; //spowrotem ustawiamy na zero
     }

I problem jest tak, że te dwie porównywane tablice są dość długie...żeby nie powiedzieć, że mają po kilkaset elementów. Nie powiem, ale jest to ekstremalnie w tym momencie zasobo żerne...na tyle, że potrafi się wysypać. Małe piszę w c++.
.ID_armii to pole typu integer.

Edit: Tak se teraz pomyślałem że mógłbym po prostu break użyć...ale to dalej nie jest najlepsze rozwiązanie

0

uzyj C++-owych kontenerów (np. vector), prawidłowego operatora porównania (żeby porównywać "armie" a nie id_armii) i algorytmów z STL, np. find_first_of w tym przypadku.

0

Może powinieneś trzymać je posortowane wg .ID_armii, może użyć map<int,Armia>

1 użytkowników online, w tym zalogowanych: 0, gości: 1