Tôi hiện đang cố gắng in ra một lịch sử chuyển động cho người chơi trong trò chơi tôi đang làm việc. Vào cuối mỗi vòng mỗi người chơi đã di chuyển một số lượng theo hướng tích cực hoặc tiêu cực và điều này được ghi lại như là một int trong vector chuyển động. Cuối cùng tôi muốn âm mưu các hướng di chuyển vs thời gian cho mỗi người chơi nhưng tôi đang gặp khó khăn khi trích xuất dữ liệu ra khỏi vector 2d.Lặp lại vector STL 2 chiều C++
Vì vậy, điều đầu tiên tôi đã cố gắng là để chỉ lặp và in tất cả các yếu tố, tuy nhiên điều này không biên dịch:
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;
}
}
}
Trình biên dịch cho thông điệp này lỗi mà tôi không thực sự hiểu:
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> > > > >&)
Bất kỳ trợ giúp nào được đánh giá cao!
Tôi cho rằng nếu bạn định viết lại mã e, nó có thể là đáng giá để cũng đặt đúng 'hàng' và' col' khai báo trong vòng lặp 'for' cho phạm vi thích hợp. –
Ngoài ra nó có lẽ sẽ có thêm một chút C++ - giống như nếu 'output_movement' được gọi là' operator << '. – Philipp
@Matthieu Tôi đã cập nhật câu trả lời của mình để bao gồm đề xuất của bạn. –