[c++] Kontener set i vector
Ostatnio zmodyfikowano 2015-09-15 15:21
wojownik266 Temat założony przez niniejszego użytkownika |
[c++] Kontener set i vector » 2015-09-15 09:57:13 Chciałem sobie trochę poćwiczyć z kontenerami i napisałem taki program jak ten poniżej. Program wydawać by się mogło jest bardzo prosty. Problem w tym że nie dla mnie bo nie wiem jak wyświetlić zawartość zagnieżdżonego kontenera vektor w kontenerze set!? Czy ktoś mógłby mnie nakierować na rozwiązanie tego problemu? Chodzi o wyświetlenie zawartości wspomnianego kontenera. Prosiłbym też o informację na temat tego co jest źle napisane w tym programie i dlaczego? Podejrzewam że głównym podejrzanym będzie pętla for...!? #include <iostream> #include <vector> #include <set> using namespace std;
int main() { set < vector < string > > call; set < vector < string > >::iterator pos; string line; cout << "Podaj tekst:"; getline( cin, line ); call.insert( call.begin(), call.end() ); for( pos = call.begin(); pos != call.end(); ++pos ) cout <<* pos << endl; cin.get(); cin.get(); return 0; }
|
|
Monika90 |
» 2015-09-15 10:00:23 Do wyświetlania użyj zagnieżdżonych pętli. call.insert( call.begin(), call.end() ); |
Taka operacja nie ma sensu. |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2015-09-15 10:03:14 Czy mogłabyś nieco rozwinąć ten temat i powiedzieć dlaczego ta operacja nie ma sensu i jeżeli tak to jaką instrukcją można zastąpić ten kawałek kodu? Będzie to coś w rodzaju..!? |
|
Monika90 |
» 2015-09-15 10:09:56 Nie wiem czym zastąpić, bo nie wiem co chciałeś osiągnąć. To co napisałeś znaczy: do pustego kontenera wstaw jego własną zawartość - czyli nic. |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2015-09-15 10:13:32 Chciałbym po prostu dodać do tego kontenera jakiś tekst i po prostu wyświetlić zawartość. Czy taka konstrukcja ma sens? call.insert( line, line );
Wydaje mi się że ma trochę więcej sensu niż ta powyżej. |
|
Monika90 |
» 2015-09-15 10:43:41 Ale nie możesz wstawić do kontenera call stringa, ponieważ elementami tego kontenera są wektory. Możesz za to wstawić wektor stringów, co można zrobić tak: albo call.insert( { line, "xyz", "abc" } );
A wyświetlić zawartość można np. w ten sposób: for( const auto & vec: call ) { for( const auto & str: vec ) std::cout << str << ' '; std::cout << '\n'; }
|
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2015-09-15 15:21:33 Bardzo, bardzo Ci dziękuję za pomoc. Program po naniesieniu poprawek według Twoich sugestii działa tak jak sobie życzyłem i ma się tak: #include <iostream> #include <vector> #include <set> using namespace std;
int main() { set < vector < string > > call; vector < string > ball; string line; int ile = 0; cout << "Ile slow chcesz wprowadzic:"; cin >> ile; for( int i = 0; i < ile; ++i ) { cin.get(); cout << "Podaj slowo:"; getline( cin, line ); ball.push_back( line ); call.insert( { line } ); } for( const auto & vec: call ) { for( const auto & str: vec ) std::cout << str << ' '; std::cout << '\n'; } cin.get(); cin.get(); return 0; }
|
|
« 1 » |