Я все еще неофит в использовании STL.Следующий фрагмент кода заполняет трехмерный вектор (S) и прекрасно компилирует (g ++).
const int maxBonds = 6;
vector< vector< vector<int> > > S;
S.resize(maxBonds);
populate(S); // function that returns S with various layers filled with int data in rows and columns.
for (vector<vector<vector<int> > >::iterator Slayer = S.begin(); Slayer != S.end(); Slayer++) {
cout << "Layer contains " << Slayer->size() << " rows" << endl;
for (vector<vector<int> >::iterator Srow = Slayer->begin(); Srow != Slayer->end(); Srow++) {
for (vector<int>::iterator Scol = Srow->begin(); Scol != Srow->end(); Scol++) {
cout << *Scol;
}
cout << endl;
}
cout << endl;
}
Это работает нормально:
Layer contains 0 rows
Layer contains 5 rows
000
200
020
220
002
Layer contains 12 rows
100
010
210
... // etc.
Однако я хотел бы распечататьзначение внешних итераторов (Slayer, Srow) во время итерации.Как правильно разыменовать текущее значение Slayer, т.е.
cout << "Layer # " << Slayer->??? << " contains " << Slayer->size() << " rows" << endl;