Přidávání znaků do stringu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přidávání znaků do stringu – C / C++ – Fórum – Programujte.comPřidávání znaků do stringu – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Šťouchal0
Stálý člen
8. 4. 2012   #1
-
0
-

Zdravím,

mám tu jeden výkonostní problém. Mám algoritmus, kde přidávám po znaku (původně čísla) a výsledkem je řetězec (řetězec potřebuji na konci). Ovšem potřebuji jich mnoho a algoritmus je pomalý. Vyzkoušel jsem:

  1. pracovat pomocí stringstreamu, kde přidávám každý znak postupně a na konci vrátím strinstream.str()
  2. přičítat znaky do strinug (myString += myChar), to jsem zrychlil na 50%

Máte nějaké nápady, jak bych mohl přidávání ještě zrychlit?

(Zkoumal jsem kdy je aplikace nejvytíženější a je to právě tota část.)

Nahlásit jako SPAM
IP: 213.168.191.–
KIIV
~ Moderátor
+43
God of flame
8. 4. 2012   #2
-
0
-

a zkusil si predem hodit stringu nejakou dostatecnou velikost, aby nemusel zvetsovat alokovane pole pro kazdy znak?

pripadne pokud aspon tusis jak dlouhe to bude tak se da i pomoci c-retezce...

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Šťouchal0
Stálý člen
8. 4. 2012   #3
-
0
-

Myslíš cstring? Jak bych to, prosimtě, mohl použít?

Tu alokaci zkusím pomoci resize

Nahlásit jako SPAM
IP: 213.168.191.–
KIIV
~ Moderátor
+43
God of flame
8. 4. 2012   #4
-
0
-

no jak... char buffer[2048]; pak na pozice 0..2046 muzes vkladat znaky... jen nesmis zapomenout vlozit na konec znak '\0', jinak nebude program vedet kde je konec

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Šťouchal0
Stálý člen
8. 4. 2012   #5
-
0
-

Jo to chápu. Ale jak to dám do stringu?

Zkusil jsem copy(buffer, velikost, 0), ale u velkých hodnot mi to dává na konec nesmysly. Ale to bude jiný problém, copy by mělo být ok, že?

Nahlásit jako SPAM
IP: 213.168.191.–
KIIV
~ Moderátor
+43
God of flame
8. 4. 2012   #6
-
0
-

string neco(buffer);  ci neco takoveho

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Šťouchal0
Stálý člen
8. 4. 2012   #7
-
0
-

Díky, bohužel nepomohlo. Teď po zněně zabere nejvíce času přiřazování

myChar[index] = '1'; // umístěno ve switchi

Nahlásit jako SPAM
IP: 213.168.191.–
yaqwsx+9
Posthunter
8. 4. 2012   #8
-
0
-

Zkus na začátek zarezervovat místo ve stringu - tvujstring.reserve(2048);

Nahlásit jako SPAM
IP: 85.160.41.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Šťouchal0
Stálý člen
9. 4. 2012   #9
-
0
-

Bohužel nepomohlo. Ale všem díky. Myslm, že problém byl v algoritmu. Je potřeba jej přemyslet. Díky všem :-)

Nahlásit jako SPAM
IP: 213.168.191.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Citanie znaku zo stringu — založil ja

Odstránenie znaku zo stringu — založil FanatiK

[C#] Nalezení znaku ve stringu — založil MartiniBaby

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý