Obecnie próbuję wydrukować historię ruchów dla graczy w grze, nad którą pracuję. Pod koniec każdej rundy każdy gracz przesunął pewną ilość w kierunku dodatnim lub ujemnym, a to zostało zarejestrowane jako int w wektorze ruchu. W końcu chcę wytyczyć kierunki przesunięte w funkcji czasu dla każdego odtwarzacza, ale mam problem z wyodrębnieniem danych z wektora 2d.Powtarzanie dwuwymiarowego wektora STL C++
Więc pierwszą rzeczą, którą starałem się po prostu iteracyjne i wydrukować wszystkie elementy, jednak to nie skompilować:
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;
}
}
}
Kompilator daje ten komunikat o błędzie, który ja naprawdę nie rozumiem:
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> > > > >&)
Każda pomoc jest bardzo doceniana!
Chciałbym twierdzić, że jeśli masz zamiar napisać ponownie e-kod, warto byłoby również poprawnie umieścić deklaracje 'row' i' col' w pętli 'for' dla odpowiedniego zakresu. –
Również może być nieco więcej C++ - jak gdyby 'output_movement' był nazywany' operator << '. – Philipp
@Matthieu Zaktualizowałem swoją odpowiedź, aby uwzględnić Twoją sugestię. –