Article View: pl.comp.lang.c
Article #309482Re: Zabrali kopiowanie przy zapisie...
From: (fir)
Date: Fri, 13 Oct 2017 22:31
Date: Fri, 13 Oct 2017 22:31
105 lines
6104 bytes
6104 bytes
W dniu wtorek, 10 października 2017 03:35:56 UTC+2 użytkownik bartekltg napisał: > On Monday, October 9, 2017 at 9:33:33 AM UTC+2, Wojciech Muła wrote: > > On Monday, October 9, 2017 at 7:23:19 AM UTC+2, bartekltg wrote: > > > On Saturday, October 7, 2017 at 3:20:51 PM UTC+2, Wojciech Muła wrote: > > > > On Saturday, October 7, 2017 at 11:16:42 AM UTC+2, Roman Tyczka wrote: > > > > > On Fri, 6 Oct 2017 06:08:35 -0700 (PDT), M.M. wrote: > > > > > > > > > > >> C++ ma wybitnie spieprzony design stringów; pomysł mutowalnych > > > > > >> stringów jest głupi z definicji. Napis to napis, zwykła wartość. > > > > > >> Modyfikacja napisu nie powinna być odpowiedzialnością klasy > > > > > >> std::string. > > > > > > > > > > > > I do takich wniosków doszli twórcy Javy. Osobiście jednak nie mam > > > > > > preferencji ani do jednego, ani do drugiego rozwiązania. > > > > > > > > > > Czyli jak jest w Javie? > > > > > > > > String jest immutable. Wszystkie operacje na stringach tworzą > > > > nowe instancje. > > > > > > > > > Ale chcieliśmy zwiększyć wydajność, nie zmniejszyć ;-) > > > > Zacytuję klasyka: "serwery są teraz tanie". :) > > :-) > > Niby tak, ale w pewnym momencie trafiamy na poziom googlo facebooka > i takie ilości serwerów już tak tanie nie są:) Albo biolog napisał > sibie na stringach przetwarzanie DNA i mi klaster zapycha... > > A na poważnie, dlaczego string ma być immutable? > Przecież moge chcieć tworzyć string literka po literce. > Mogę chcieć zrobić jakieś operacja na nim, > std::sort czy std::next_permutation > W tym wypadku będą(?) miał metodę która mi to wywala wynik > jako string. > Bawiłem się chwilę (czysto rozrywkowo) c#, i tam literki stringa > są immutable. Więc waliłem .ToCharArray(), robiłem swoje i > konstruowałem nowego stringa. > Pomijając wydajność, było to też brzydkie. > std::string nie służy tylko do trzymania napisu, ale > i przetwarzania, składania. > > Ale od drugiej strony, jakie zalety ma niezmienny string? niezmienny string ma na przyklad ta niebagatelna zalete ze jest niezniszczalny, nie mozna go wiec w szczegolnosci zamazac/zepsuc/zniszczyc informacje - wiekszosc stringow jest po to by niesc jakas informacje (np lądja na ekranie czy na kontrolkach itd i nie sa po to by je niszczyc) na niejako podobnej zasadzie stringi nie sa po to by do nich pisac (tj o ile wejsciowe stringi nie sa po to by je niszczyc to wyjsciowe stringi nie sa po to by je tworzyc) dlatego ze ram nie jest po to by ja opisywac stringami dla dekoracji, jesli ktos tworzy jakis nowy string to po to by on trafil gdzies na zewnatrz a do teo mozna wykorzystac - jak pisalem printfa i stworzyc string na wyjsciu a nie w ramie pominawszy to resizowalny string mozna zrobic dla zabawy - podalem ilustracje jak mozna i jak wlasciwie nalezy to zrobic taki string nie bylby raczej w ogolnosci za mocny wydajnosciowo ale mialby chyba dosyc ciekawe wlasnosci 'wygodnosciowo' - byc moze warto nawet na ten temat troche pomyslec ciekawa jest na przyklad opcja zmergeowania dwu takich resizowalnych stringow wtedy ten drugi po prostu znika mozna sobie powyobrazac rozne operacja na takich stringach i zbudowac pewna 'algebre' operacji na takich stringach - i to tym razem bardziej pod wzgledem wygody niz speedu (programistow c tez czasem moze byc stac na wygode ;c choc oczywiscie lepiej wiedziec co sie robi) przyklady: dodanie stringa na poczatku a = b + a; dodanie stina na koncu a = a + b; zmergeowanie stringow: d=a+b+c; a.size = 0; b.size = 0; c.size = 0; tutaj co prawda nie wiem czy faktyczni enie warto dodac czegos w rodzaju 'destruktora' by bylo krocej d=~a+~b+~c; //? dodaj i zresizuj na zero w moim siclu mam typ chunks czyli tablice chunkow a dokladnie chunk chunkow, przy takim typie mozna dodac tez dzielenie stringow chunks l = txt/'\n'; chunks l = "ala ma kota"/" "; pytanie czy tekst dzilacy pownien sie znalezc w skladnikach czy powinien byc usuniety.. co tam jeszcze.... > Szybkie googlanie podaje powody, które można załatwić > const, albo są specyficzne dla określonego jezyka (np cachowanie > hashy stringów, bo są często używane). > > pzdr > bartekltg
Technical Details
Message-ID:
<3d6d153f-34d8-4ee9-b333-9e3072a072c9@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.fr7!futter-mich.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k31no448595qta.1!news-out.google.com!r5ni1216qtc.1!nntp.google.com!k31no448593qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<or4v67$ene$1@node1.news.atman.pl> <72ac4d9c-806c-4c0d-9d17-e6a1bca634cb@googlegroups.com> <148be543-e417-4b7b-aaa1-5fad87fe41bd@googlegroups.com> <137swhz7qzvw7.dlg@tyczka.com> <6a1a94c7-2d75-4569-8fae-574fb23c919e@googlegroups.com> <d73024b7-92e0-49f9-b827-bfc7b639739b@googlegroups.com> <73ec442f-1a8b-43fc-a06f-a5534a6f3438@googlegroups.com> <da509e00-e7ff-49bb-8870-b77b25bcc560@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.233.220.132 with SMTP id q126mr2149784qkf.41.1507933900372; Fri, 13 Oct 2017 15:31:40 -0700 (PDT) X-Received: by 10.31.201.3 with SMTP id z3mr180069vkf.0.1507933900248; Fri, 13 Oct 2017 15:31:40 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.fr7!futter-mich.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k31no448595qta.1!news-out.google.com!r5ni1216qtc.1!nntp.google.com!k31no448593qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Fri, 13 Oct 2017 15:31:39 -0700 (PDT) In-Reply-To: <da509e00-e7ff-49bb-8870-b77b25bcc560@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=37.47.38.173; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN NNTP-Posting-Host: 37.47.38.173 References: <or4v67$ene$1@node1.news.atman.pl> <72ac4d9c-806c-4c0d-9d17-e6a1bca634cb@googlegroups.com> <148be543-e417-4b7b-aaa1-5fad87fe41bd@googlegroups.com> <137swhz7qzvw7.dlg@tyczka.com> <6a1a94c7-2d75-4569-8fae-574fb23c919e@googlegroups.com> <d73024b7-92e0-49f9-b827-bfc7b639739b@googlegroups.com> <73ec442f-1a8b-43fc-a06f-a5534a6f3438@googlegroups.com> <da509e00-e7ff-49bb-8870-b77b25bcc560@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <3d6d153f-34d8-4ee9-b333-9e3072a072c9@googlegroups.com> Subject: Re: Zabrali kopiowanie przy zapisie... From: "(fir)" <profesor.fir@gmail.com> Injection-Date: Fri, 13 Oct 2017 22:31:40 +0000 X-Received-Body-CRC: 77031716 X-Received-Bytes: 6421 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit