[ mr10x505 @ 12.12.2011. 11:51 ] @
Pitanje je sledece: ako definišem matricu na sledeći način:

typedef vector<vector<int> > mat;
mat matrica ( 0, vector<int> ( 0, 0 ) );

postoji li mogućnost upotrebe iteratora ili, kako bih prolazio kroz matricu, moram da koristim dve for petlje. Pri standardnoj notaciji, upotrebom iteratora mogu da pristupim samo prvom nizu, ali ne i sledecim
[ Mihajlo Cvetanović @ 12.12.2011. 12:15 ] @
std::vector ima svoj standardni iterator. Pošto imaš dva vektora onda imaš i dva tipa iteratora, i moraš da koristiš dvostruku petlju. Ne postoji ugrađeni iterator specijalno za vector<vector<>> koji bi prolazio kroz sve elemente svih unutrašnjih vektora. Ako želiš takav specijalni iterator onda moraš sam da ga napraviš.
[ mr10x505 @ 12.12.2011. 12:45 ] @
Citat:
Mihajlo Cvetanović: std::vector ima svoj standardni iterator. Pošto imaš dva vektora onda imaš i dva tipa iteratora, i moraš da koristiš dvostruku petlju. Ne postoji ugrađeni iterator specijalno za vector<vector<>> koji bi prolazio kroz sve elemente svih unutrašnjih vektora. Ako želiš takav specijalni iterator onda moraš sam da ga napraviš.


Upravo to me i zanima. Ne mogu nigde da nadjem kako da to napisem

Jedan iteratora sam definisao kao:
vector <vector<int>>::iterator iter = matrica.begin();

to je, kako bih rekao, iterator za jednu dimenziju, kako da napisem iterator za drugu???


PS. hvala na brzom odgovoru!
[ Mihajlo Cvetanović @ 12.12.2011. 13:32 ] @
Ovo je nadam se odgovor:

Code:
for (vector<vector<int> >::iterator it1 = matrica.begin(); it1 != matrica.end(); it1++)
{
  for (vector<int>::iterator it2 = (*it1).begin(); it2 != (*it1).end(); it2++)
  {
    // koristi se *it2 kao element matrice tipa int. Može da se i čita i piše
  }
}