🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309469

Re: Zabrali kopiowanie przy zapisie...

#309469
From: M.M.
Date: Thu, 12 Oct 2017 14:00
82 lines
5435 bytes
On Thursday, October 12, 2017 at 2:42:29 PM UTC+2, (fir) wrote:
> z tym ze ten wygodny string musi jakis byc,
No musi. 


> jak bedzie taki to bedzie mialo jakies konsekwencje a jak bedzie 
> inny bedzie mialo inne - 
Owszem.


> nie znam za bardzo stringa z c++ ale na ile go znam to jest 
> to string spieprzony, 
Nie wiem jak porównujesz. Zazwyczaj jeśli coś jest pod jednym względem
spieprzone, to pod innym jest dobre. std::string to chyba coś pośredniego
pomiędzy wygodą a wydajnością. QString jest dla mnie wygodniejszy, a 
może tylko jestem bardziej przyzwyczajony do QStringa?

> string w c (char*) tez jest spieprzony choc mniej
Nie wiem co masz na myśli. Ku ścisłości, to ani w C, ani w C++ nie ma
stringów. Ciąg znaków rozpoczynający się gdzieś w pamięci i kończący
znakiem zero ma to spieprzone, że trzeba iterować aby sprawdzić długość.
A to ma dobre, że nie traci się czasu ani pamięci na dodatkowe pole z
informacją o długości. Raz to jest zaleta, drugi raz wada.


> 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

Twoja propozycja w jednych zastosowaniach będzie lepsza, w innych gorsza - 
jak każda propozycja. Jeśli potrzebujesz, zrób sobie taki string, standard
C, ani C++ nie broni Ci zrobić.


> (wskazniki sa dostepne przez txt.begin i txt.end 
> jesli string jest realokowalny to mozna zmienic jego rozmiar przez przypisania size
> 
> txt.size += 10;

Nie szkoda czasu na rozmowy, czy lepiej wywołać:
string.reserve( string.size() + 10 )
string.apendreserve( 10 )
string.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)

Nie wiem... mi to trochę zakrawa na rozmowę czy biały kolor jest lepszy 
czy czarny. W C i C++ jest kilka gotowych sposobów na stringi. Jeśli
Ci nie wystarcza, możesz napisać swój sposób - ja tak robię. Nie wystarczało 
mi drzewo czerwono czarne z bibliotek, napisałem swoje. Potem okazało się,
że moje sprawdza się bardzo dobrze jako ogólna (a wyspecjalizowana do
jednego zadania) struktura, to udostępniłem.

Pozdrawiam
Technical Details
Message-ID: <e233ce59-d07e-4a4a-a761-774391feb8c1@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!peer01.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!z50no309976qtj.0!news-out.google.com!p42ni650qtp.0!nntp.google.com!z50no309974qtj.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
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> <960d1c29-bf51-433e-bb1e-9e2361cd8f54@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.200.20.12 with SMTP id k12mr1919969qtj.7.1507816817983;        Thu, 12 Oct 2017 07:00:17 -0700 (PDT)
X-Received: by 10.31.169.76 with SMTP id s73mr1050486vke.14.1507816817926; Thu, 12 Oct 2017 07:00:17 -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!peer01.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!z50no309976qtj.0!news-out.google.com!p42ni650qtp.0!nntp.google.com!z50no309974qtj.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Thu, 12 Oct 2017 07:00:17 -0700 (PDT)
In-Reply-To: <960d1c29-bf51-433e-bb1e-9e2361cd8f54@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=159.205.38.229; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 159.205.38.229
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> <960d1c29-bf51-433e-bb1e-9e2361cd8f54@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <e233ce59-d07e-4a4a-a761-774391feb8c1@googlegroups.com>
Subject: Re: Zabrali kopiowanie przy zapisie...
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Thu, 12 Oct 2017 14:00:17 +0000
X-Received-Body-CRC: 4006572837
X-Received-Bytes: 5754
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit