[C++] Dołączanie elementów do dwuwymiarowego wektora
Ostatnio zmodyfikowano 2017-12-26 20:15
SzymSzym Temat założony przez niniejszego użytkownika |
[C++] Dołączanie elementów do dwuwymiarowego wektora » 2017-12-24 22:24:51 Napisałem klasę reprezentującą konkretne ustawienie w grze kółko i krzyżyk na dużej planszy. Prototyp klasy wygląda tak: class ustawienie { private: std::vector < std::vector < pole > > pola; double priorytet; public: ustawienie(); ustawienie( std::vector < std::vector < pole > >& jakie ); ~ustawienie() { } void setPoleMap( std::vector < std::vector < pole > >& jakie ); bool czyWystepuje( int ktore, int kolumna = 0, int rzad = 0 ); void changePrior( int change ); };
Problem leży w funkcji setPoleMap, która wygląda tak: void ustawienie::setPoleMap( vector < vector < pole > >& jakie ) { for( int i = 0; i < jakie.size(); i++ ) for( int s = 0; s < jakie[ i ].size(); s++ ) pola[ i ].push_back( jakie[ i ][ s ] ); }
Jest to prosta funkcja kopiująca wektor z argumentu do składowej pola. Program po dojściu tutaj wywala się, natomiast debugger przeskakuje do pliku stl_vector.h, do fragmentu: data() const _GLIBCXX_NOEXCEPT { return _M_data_ptr( this->_M_impl._M_start ); }
void push_back( const value_type & __x ) { if( this->_M_impl._M_finish != this->_M_impl._M_end_of_storage ) { _Alloc_traits::construct( this->_M_impl, this->_M_impl._M_finish, __x ); ++ this->_M_impl._M_finish; }
Fragment jakie(i)(s) jest typu pole, natomiast pole(i) to wektor typu pole więc element powinien się dać przekopiować, jednakże tego nie robi. Czy ktoś ma pomysł w jaki sposób napisać to tak, żeby działało? |
|
Monika90 |
» 2017-12-25 12:53:17 Dlaczego nie tak void ustawienie::setPoleMap( const vector < vector < pole > >& jakie ) { pola = jakie; }
? |
|
SzymSzym Temat założony przez niniejszego użytkownika |
» 2017-12-26 20:15:19 A to tak sie da xD |
|
« 1 » |