wytłumaczenie kodu - list, iterator

0
for(list<int>::iterator i = L[v].begin(); i != L[v].end(); i++)
      if((*i) == 1)

Czy ktoś byłby mi w stanie wytłumaczyć ten fragment kodu? Laikiem nie jestem, ale tworzę raczej w C# i ni jak nie potrafię dojść co się dzieje tutaj.

L[] to oczywiście zainicjowana tablica list. Chodzi mi najbardziej o fragment *i i zainicjowanie zmiennej i

Dziękuję.

0

list<int>::iterator i = L[v].begin() ustawia iterator na pierwszy element na liście
i != L[v].end() sprawdza czy nie dojechał do końca listy
i++ przechodzi do następnego elementu
(*i) zwraca wartość na która wskazuje iterator</cpp>

0

Analogicznie w C# miałbyś coś na kształ

for(List<int>.Enumerator i=L[v].GetEnumerator(); i.MoveNext(); ) {
    if(i.Current==1) { 
        //...
    }
}
0

Baaardzo dziękuję za odpowiedzi, jeszcze tylko pytanie, dlaczego nie mogę użyć foreach tutaj?

0

Choćby dlatego, że w C++ nie ma foreach. Zamiast klasycznej pętli for możesz użyć std::for_each lub BOOST_FOREACH. Pytanie tylko czy warto :)

0

Możesz użyć foreach

//Edit

Chodziło mi właśnie o for_each

0

Ah, Panowie serdeczne dzięki za pomoc.

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