Attualmente sto cercando di stampare una cronologia di movimenti per i giocatori in un gioco su cui sto lavorando. Alla fine di ogni round, ogni giocatore ha spostato una certa quantità in direzione positiva o negativa e questo viene registrato come int nel vettore di movimento. Alla fine sto cercando di tracciare le direzioni mosse contro il tempo per ciascun giocatore, ma ho difficoltà ad estrarre i dati dal vettore 2D.Iterating over STL vector bidimensionale C++
Quindi la prima cosa che ho provato è stato quello di iterare solo e stampare tutti gli elementi, tuttavia questo non compila:
void output_movement(const std::vector< std::vector<int> > & movement){
std::vector< std::vector<int> >::iterator row;
std::vector<int>::iterator col;
for (row = movement.begin(); row != movement.end(); ++row) {
for (col = row->begin(); col != row->end(); ++col) {
std::cout << **col;
}
}
}
Il compilatore fornisce questo messaggio di errore che io non capisco:
hg_competition.cpp:45: error: no match for ‘operator=’ in ‘row = ((const std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >*)money_movement)->std::vector<_Tp, _Alloc>::begin [with _Tp = std::vector<int, std::allocator<int> >, _Alloc = std::allocator<std::vector<int, std::allocator<int> > >]()’
/usr/include/c++/4.4/bits/stl_iterator.h:669: note: candidates are: __gnu_cxx::__normal_iterator<std::vector<int, std::allocator<int> >*, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > >& __gnu_cxx::__normal_iterator<std::vector<int, std::allocator<int> >*, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > >::operator=(const __gnu_cxx::__normal_iterator<std::vector<int, std::allocator<int> >*, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > >&)
Qualsiasi aiuto è molto apprezzato!
Direi che se hai intenzione di riscriverti Il codice, potrebbe valere la pena di inserire correttamente anche le dichiarazioni 'row' e' col' all'interno del ciclo 'for' per un corretto scope. –
Inoltre sarebbe forse un po 'più simile al C++ se "output_movement" fosse chiamato "operatore <<". – Philipp
@Matthieu Ho aggiornato la mia risposta per includere il tuo suggerimento. –