Witam,
natrafiłem na pewien problem optmalizacyjny.
Stworzyłem sobie tablice struktur:
struct menu_wyg {
string napis;
bool czy_wybrano = 0;
}wyg[6];
W uproszczeniu - program ma modyfikowac dane w pliku tekstowym, powiedzmy, ze na koncu kazdej linijki ma dopisac to co jest w zmiennej napis, jesli czy_wybrano ma true.
Moje pytanie brzmi - jak zrobić pętlę while, która wykona to do konca pliku sprawdzajac ifami tylko raz?
Oczywiscie zdaje sobie sprawe, ze moglbym zrobic duze, rozbudowane ify dla kazdej mozliwosci, ale byloby ich tyle ile szufladek w tablicy, a przeciez moze byc ich znacznie wiecej niz 6.
Taki zapis:
ifstream plik;
ofstream plikz;
menu_wyg cos[6];
string linijka;
while(!plik.eof()){
getline(plik, linijka);
for(int i=0; i<sizeof(cos)/sizeof(menu_wyg); i++){
if(cos[i].czy_wybrano == true){
linijka += cos[i].napis;
}
}
plikz << linijka;
}
Powoduje, ze if wykona sie tam wielkosc_tablicy * ilosc_linijek wiec jest to mocno nieoptymalne. Jak to obejsc?