Actualmente estoy tratando de imprimir un historial de movimientos para jugadores en un juego en el que estoy trabajando. Al final de cada ronda, cada jugador ha movido una cierta cantidad en la dirección positiva o negativa y esto se registra como un int en el vector de movimiento. Finalmente, quiero trazar las direcciones movidas frente al tiempo para cada jugador, pero estoy teniendo problemas para extraer los datos del vector 2d.Iteración sobre el vector bidimensional STL C++
Así que lo primero que intenté fue simplemente recorrer e imprimir todos los elementos, sin embargo esto no se 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;
}
}
}
El compilador da este mensaje de error que yo no entiendo muy bien:
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> > > > >&)
¡Toda ayuda es muy apreciada!
yo diría que si vas a reescribir º El código e, podría valer la pena también poner apropiadamente las declaraciones 'row' y' col' dentro del ciclo 'for' para el alcance apropiado. –
También podría ser un poco más C++ - como si 'output_movement' se llamara' operator << '. – Philipp
@Matthieu He actualizado mi respuesta para incluir su sugerencia. –