Sortowanie stringa jako elementu listy
Ostatnio zmodyfikowano 2018-11-27 21:34
werter Temat założony przez niniejszego użytkownika |
Sortowanie stringa jako elementu listy » 2018-11-27 03:45:03 Cześć, borykam się z ostatnim problemem który został mi do napisania programu. Mianowicie załóżmy że tworze listę przechowującą obiekty typu string. i dodaje do niej nowy element reprezentujący jakiś napis lista.push_front( "ala lubi bartka" );
i szukam pomocy jak: 1. Przesortować(zamienić kolejność slow) ten napis alfabetycznie czyli zamiast "ala lubi bartka" powinno być "ala bartka lubi".Czytałem o sortowaniu elementów w liście ale to było sortowanie porównujące parę elementów listy a ja muszę każdy element reprezentujący jakiś napis posortować tak jak u góry ;/ 2.W jaki sposób zwrócić liczbę słów znajdujących się w owym elemencie listy? bo meteda .lenght() zwraca mi tylko sumę wszystkich znaków. |
|
pekfos |
» 2018-11-27 09:33:12 Lista nie ma tu nic do rzeczy. Nie ma nic specjalnego w "stringu jako elemencie listy" względem "stringa po prostu". Żeby posortować napis po słowach musisz najpierw podzielić go na słowa i zapisać np w wektorze, wtedy możesz posortować słowa alfabetycznie przez std::sort() i zostanie tylko skleić ciąg słów w wynikowy napis. |
|
werter Temat założony przez niniejszego użytkownika |
» 2018-11-27 17:55:47 Zadziałało,dzieki :) |
|
werter Temat założony przez niniejszego użytkownika |
» 2018-11-27 21:23:04 Ale w sumie to mam jeszcze jeden problem ;/ Tworze kolejke priorytetowa ktora przechowuje liste stringow i pisze do niego comparator porównujący dlugosc stringa,tylko ze kiedy próbuje wstawic do tej kolejki liste to dostaje blad. struct comp { bool operator ()( const string & lhs, const string & rhs ) const { return lhs.size() < rhs.size(); } };
main() { priority_queue < string, list < string >, comp > kolejka; list < string > lista; lista.push_front( "jeden i nie ostatni" ); lista.push_front( "drugi i nie gorszy" ); lista.push_front( "trzeci i sprawiedliwy" ); kolejka.push( lista )
nie wiem czemu ale nie moge wstawic zdj z bledem,wiec tu jest link https://ibb.co/CQcgFTS jesli nie korzystam z comparatora czyli kolejka wyglada tak priority_queue<list<string> > to dziala..no ale muszę mieć w kolejce te listy posortowane wzgledem dlugosci ;/ |
|
pekfos |
» 2018-11-27 21:26:40 no ale muszę mieć w kolejce te listy posortowane wzgledem dlugosci ;/ |
Więc dlaczego próbujesz robić cokolwiek innego, niż kolejkę, która przechowuje listy? priority_queue < string, list < string >, comp > kolejka;
To nie jest kolejka list. |
|
werter Temat założony przez niniejszego użytkownika |
» 2018-11-27 21:28:40 "Korzystając z kontenerów biblioteki STL utwórz typ danych – kolejkę priorytetową list, przy czym elementami list są słowa (obiekty typu string)." "Listy słów zapisane w kolejce priorytetowej powinny być w niej posortowane pod względem ich długości od najdłuższych do najkrótszych list. W tym celu napisz obiekt funkcyjny do porównywania długości list"
bo taka jest treść zadania :< |
|
pekfos |
» 2018-11-27 21:30:38 Kolejka list = kolejka, w której elementy to listy. |
|
werter Temat założony przez niniejszego użytkownika |
» 2018-11-27 21:33:00 czyli priority_queue<list<string> > tak? tylko jak użyć wlasnego komparatora,bo w dokumentacji widziaialem ze to ostatni parametr deklaracji. |
|
« 1 » 2 |