🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

C++ i poprawne sortowanie ciągów Unicode z numerami - jak?!?

#309803
From: szykcech
Date: Sun, 20 Jan 2019 20:37
15 lines
2313 bytes
Witam
Wiem, że nie jest to wyzwanie, ale może jest jakieś gotowe i sprawdzone rozwiązanie sortowania ciągów znaków ze znakami Unicode i z numerami.

Była kiedyś zrobiona klasa opakowująca Icu omówiona na blogu Qt:
http://blog.qt.io/blog/2011/06/14/string-collation-with-locales/
Jednak link do repozytorium jest martwy i chyba nie ma tego nigdzie indziej...
A jak podaje autor funkcja ta była 30 razy szybsza niż owe localAwareCompare pod Linuxem i 5 razy niż pod Windows...

Wiem jak ten problem rozwiązać nieefektywnie:
w pętli:
1. zliczam ilość znaków innych niż cyfry, porównuję je ze sobą, jeśli się różnią to zwracam wynik porównania localAwareCompare
2. jeśli są takie same, to zliczam cyfry i jeśli się różnią to zwracam wynik porównania.
3. jeśli nie koniec ciągu znaków to przejdź do 1.

Od biedy mogę tak to zakodować, bo nie spodziewam się wielkich kontenerów z tymi ciągami znaków. Jednak jeśli było by jakieś gotowe rozwiązanie to mógłbym skorzystać...
Technical Details
Message-ID: <ff62d113-a59b-493c-9334-16a185c47796@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!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!v55no5056246qtk.0!news-out.google.com!m21ni4170qta.0!nntp.google.com!v55no5056244qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Received: by 2002:a37:4cd7:: with SMTP id z206mr5941220qka.44.1548016664811;        Sun, 20 Jan 2019 12:37:44 -0800 (PST)
X-Received: by 2002:a81:550b:: with SMTP id j11mr287572ywb.4.1548016664668; Sun, 20 Jan 2019 12:37:44 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!v55no5056246qtk.0!news-out.google.com!m21ni4170qta.0!nntp.google.com!v55no5056244qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Sun, 20 Jan 2019 12:37:44 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=188.146.77.230; posting-account=pyti1AoAAAAf66c003TUy10QAAnMWaKw
NNTP-Posting-Host: 188.146.77.230
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ff62d113-a59b-493c-9334-16a185c47796@googlegroups.com>
Subject: C++ i poprawne sortowanie ciągów Unicode z
 numerami - jak?!?
From: szykcech@gmail.com
Injection-Date: Sun, 20 Jan 2019 20:37:44 +0000
Lines: 25
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit