Article View: pl.comp.lang.c
Article #309468Re: Zabrali kopiowanie przy zapisie...
From: (fir)
Date: Thu, 12 Oct 2017 12:42
Date: Thu, 12 Oct 2017 12:42
69 lines
5365 bytes
5365 bytes
W dniu czwartek, 12 października 2017 01:22:45 UTC+2 użytkownik M.M. napisał: > On Tuesday, October 10, 2017 at 9:31:03 AM UTC+2, Wojciech Muła wrote: > > On Tuesday, October 10, 2017 at 3:35:56 AM UTC+2, bartekltg wrote: > > > A na poważnie, dlaczego string ma być immutable? > > > Przecież moge chcieć tworzyć string literka po literce. > > > > Tu wracamy do tego, co napisałem na początku: C++ spieprzył > > design stringa. (Chociaż ze string_view jest teraz trochę lepiej). > > > > Powinny być osobne stringi immutable, osobne mutable, albo > > lepiej buildery do stringów. Zauważ, że są różne sposoby > > budowania napisów. Z mojej praktyki: > > * doklejasz po jednym znaku; > > * doklejasz inne stringi (np. sformatowane liczby); > > * kasujesz podzakresy; > > * zamieniasz jedne podciągi na inne; > > * albo tylko zmieniasz literki (np. lowercase), bez zmiany długości > > napisu. > > > > Niestety, C++ upchnął za dużo odpowiedzialności w jedną klasę przez > > co implementacja musi być generyczna, więc dla jednych scenariuszy > > będzie szybka dla innych nie - i nie wiesz dla których. :) > > > > A może w ogóle pomysł, żeby string musiał ciągłym obszarem pamięci > > jest przesadą. Łatwiej byłoby przyjąć, że string to zbiór obszarów > > pamięci. To się da łatwo ukryć za fasadą iteratora. > > > > w. > > Zazwyczaj to ja kroję włosa na czworo, ale teraz mam wrażenie, że to Wy > kroicie :) String to string, ma być wygodny, nie nadaje się do pisania > wyżyłowanych i wyspecjalizowanych implementacji. > z tym ze ten wygodny string musi jakis byc, jak bedzie taki to bedzie mialo jakies konsekwencje a jak bedzie inny bedzie mialo inne - nie znam za bardzo stringa z c++ ale na ile go znam to jest to string spieprzony, string w c (char*) tez jest spieprzony choc mniej moja propozycja stronga w c padla, nazwalem go chunk (jesli mowie o mijej implementacji bibliotecznej - jako wbudowany typ moglby miec predefiniowne wersje np chars txt = "ala ma kota"; //ew char[] txt = "ala ma kota"; to wyzej to niemal to samo co char* txt = "ala ma kota"; tylko ze txt nie jest jednym wskaznikiem a para wskaznikow i na koncu "ala ma kota" nie ma zera (wskazniki sa dostepne przez txt.begin i txt.end jesli string jest realokowalny to mozna zmienic jego rozmiar przez przypisania size txt.size += 10; //itd ten string moim zdaniem jest dosyc porzadny, dzili sie tez jak widac na dwie klasy nie tyle na mutable i immutable co na resiziwalne i nieresizowalne (co prawda slowko na oznaczenie immutable tez by sie pewnie przydalo) te ktore maja byc na stercie ja bym chyba robil dodajac slowo heap heap chars txt; tym ze satycznego ramu byc moze tez wartoby dac pewien zakers rozszeżalnosci, przez okreslenie folnego i gornego limitu chars(2 to 60) txt; czy cos w tym stylu ale tu nie jestem przekonany czy dokladnie tak (w tym wypadku wiadomo by bylo ze i tak zostanie zaalokowane 60 znakow wiec size ktore mialwaloby inne wartosci moze wydawac sie konfudujace ale tak naprawde takie size moglobybyc wygodne (zreszta takie hinty heapowi tez by sie przydaly, kwestia czy mozna robic takie resizowalne stringi na stosie zalezy od implementacji, te bez gornago limitu wydaje sie ze ewentualnie bez dodatkowego stosu chyba nie ale te z limitami wydaje sie ze mozna nawet na jednym stosie - ( w wiekszosci wypadkow wydaje sie starcza stringi z limitami zwlaszcza na te stosie)
Technical Details
Message-ID:
<960d1c29-bf51-433e-bb1e-9e2361cd8f54@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.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k31no303289qta.1!news-out.google.com!r5ni943qtc.1!nntp.google.com!k31no303287qta.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> <c8b4dab5-5afa-45a4-a3d8-67bc8a5b2aee@googlegroups.com> <fe52664e-2569-46e3-b18c-750c30cd8963@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.55.77.130 with SMTP id a124mr1699913qkb.24.1507812148351; Thu, 12 Oct 2017 05:42:28 -0700 (PDT) X-Received: by 10.31.160.207 with SMTP id j198mr1118913vke.10.1507812148321; Thu, 12 Oct 2017 05:42:28 -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.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k31no303289qta.1!news-out.google.com!r5ni943qtc.1!nntp.google.com!k31no303287qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Thu, 12 Oct 2017 05:42:27 -0700 (PDT) In-Reply-To: <fe52664e-2569-46e3-b18c-750c30cd8963@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=37.47.5.218; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN NNTP-Posting-Host: 37.47.5.218 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> <c8b4dab5-5afa-45a4-a3d8-67bc8a5b2aee@googlegroups.com> <fe52664e-2569-46e3-b18c-750c30cd8963@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <960d1c29-bf51-433e-bb1e-9e2361cd8f54@googlegroups.com> Subject: Re: Zabrali kopiowanie przy zapisie... From: "(fir)" <profesor.fir@gmail.com> Injection-Date: Thu, 12 Oct 2017 12:42:28 +0000 X-Received-Bytes: 5533 X-Received-Body-CRC: 2434633345 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit