lewus Temat założony przez niniejszego użytkownika |
usuwanie wiersza z wektora 2D » 2021-01-26 02:00:20 Witam Nie mogę usunąć wiersza jeśli znajduje się w nim konkretna liczba, np. 0. W zamieszczonym kodzie program usuwa tylko niektóre wiersze z 0. #include <iostream> #include <vector> using namespace std;
int main() { vector < vector < int >> of = { { 0, 4, 7 }, { 0, 4, 5 }, { 2, 4, 6 }, { 0, 4, 8 }, { 0, 1, 2 }, { 0, 3, 6 }, { 2, 5, 8 }, { 6, 7, 8 }, }; for( int i = 0; i < of.size(); i++ ) for( int j = 0; j < of[ i ].size(); j++ ) if( of[ i ][ j ] == 0 ) of.erase( of.begin() + i ); } |
|
DejaVu |
» 2021-01-26 11:01:45 Drugą pętlę należy przerwać po usunięciu elementu (break). |
|
lewus Temat założony przez niniejszego użytkownika |
» 2021-01-26 11:36:27 Czy przerwanie ma wyglądać tak, bo działa jak bez break'a? #include <iostream> #include <vector> using namespace std;
int main() { vector < vector < int >> of = { { 0, 4, 7 }, { 0, 4, 5 }, { 2, 4, 6 }, { 0, 4, 8 }, { 0, 1, 2 }, { 0, 3, 6 }, { 2, 5, 8 }, { 6, 7, 8 }, }; for( int i = 0; i < of.size(); i++ ) { for( int j = 0; j < of[ i ].size(); j++ ) { if( of[ i ][ j ] == 0 ) { of.erase( of.begin() + i ); break; } } } }
|
|
nanoant20 |
» 2021-01-26 15:15:03 for( unsigned int i = 0; i < of.size(); ++i ) { for( unsigned int j = 0; j < of[ i ].size(); ) { if( of[ i ][ j ] == 0 ) { of.erase( of.begin() + i ); --i; break; } else { ++j; } } }
|
|
lewus Temat założony przez niniejszego użytkownika |
» 2021-01-26 15:24:49 dzięki za pomoc |
|
« 1 » |