Veľa prvkov v poli? // C++ [HOTOVO]

Programovacie jazyky, rady, poradňa...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Veľa prvkov v poli? // C++ [HOTOVO]

Príspevok od používateľa BX »

Zdravím vás.
Urobil som si jednoduchý programík na triedenie veľkého počtu reťazcov (konkrétne mailov, ale to nie je podstatné) - teda robí to iba to, že z veľa mailov v súbore mi ich načíta a zbaví sa tých, čo sú tam dva a viac krát. Používam na to dva polia - pole so všetkými adresami a nové, už roztriedené pole, čisté.
Urobím si teda dva dvojrozmerné polia znakov char adresa[10000][100] a char ciste[10000][100] - To preto, že mám 10000 mailov, ktorým predpokladám max. dĺžku 100. Všetko mi funguje tak ako má, až dokým nezvýšim rozsah z 10000 na trebárs 11000 a viac. Vtedy sa mi program po spustení zrúti bez chyby pri kompilácií. Niesom si vedomý, že by som presahoval nejaký rozsah, alebo čo. Tak čo s tým prosím vás je? :?
Zdroják pre istotu v prílohe: (Radšej ho nekomentujte, písal som to len aby to fungovalo : D)
Prílohy
triedenie.rar
(959 Bajtov) 20 stiahnutí
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: Veľa prvkov v poli? // C++

Príspevok od používateľa sharky-no »

skus to robit dynamicky.. zakazdym pri pridani mailu do pola si alokovat pamat
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Veľa prvkov v poli? // C++

Príspevok od používateľa audiotrack »

myslím že ani to nepomôže, ak je ich skutočne tak veľa. Polia sú totiž spojitá dátová štruktúra, tak nemôže používať všetkú pamäť kvôli heap fragmentation. Použil by som nejaký lineárny zoznam
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Veľa prvkov v poli? // C++

Príspevok od používateľa chrono »

Na zásobníku len málokedy môžeš alokovať tak veľa pamäte, takže v tvojom prípade by pomohlo použiť globálne premenné (do dátového segmentu sa zmestí oveľa viac dát). |Samozrejme ideálne by bolo, keby si to hneď dával do nejakého stromu (najlepšie automaticky vyvažovaného a teda napr. RB) aby potom to vyhľadávanie rovnakých adries netrvalo zbytočne dlho.
pipiak
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 321
Registrovaný: 11 jún 2006, 9:24
Bydlisko: KE
Kontaktovať používateľa:

Re: Veľa prvkov v poli? // C++

Príspevok od používateľa pipiak »

preco na to nepouzit nieco ine ako beznu premennu ? (pole)
Napr. databazu SQL / xml subory / neviem ci to je v c++...
Pretoze aj keby ti to fungovalo musi to byt extremne pomale...
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Veľa prvkov v poli? // C++

Príspevok od používateľa chrono »

Nemyslím si, že by to bolo pomalšie ako XML (pretože XML je tiež len "obyčajný" textový súbor s kopcom réžie navyše). :)
Preetro
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 269
Registrovaný: 16 nov 2005, 19:40
Bydlisko: škatuľka od topánok

Re: Veľa prvkov v poli? // C++

Príspevok od používateľa Preetro »

neviem ako si to kodil ked ti to nevypisalo chyby, ale mne to chyby vypisalo...
1. chcel by si silou mocou pisat program v c++, ale na pracu so suborom, retazcami pouzivas funkcie C
2. ak tak velmi chces pouzivat funkcie C, tak si pridaj

Kód: Vybrať všetko

#include <stdio.h>
#include <string.h> 
aby ti to vobec fungovalo.....ked si to opravis, tak napis ci ti to stale nejde
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Veľa prvkov v poli? // C++

Príspevok od používateľa BX »

Zas tak strašne strašne veľa ich nie je, takže stačilo dať polia ako globálne. Takže Chrono diki :)
Nič špeciálne na to nepotrebujem, je ich 20000 a na to mi toto stačí. Ale ďakujem všetkým, do budúcna keby som rozširoval, tak sa mi to určite zíde :P

A Preetro: Písal som, že zdroják nekomentujte. Viem, že nie je najkrajší. Ale aj tak, nie vôbec som sa nepokúšal písať silou-mocou v C++. cstdlib má všetko čo potrebujem, takže nevidím dôvod hádzať tam ďalšie inklúdy. A fopen používam radšej ako fstream, ale zase cout je na vypisovanie rýchlejšie a pohodlnejšie ako printf. V tomto prípade som tomu neprikladal žiadny význam, keďže tu vypisovanie na obrazovku nehrá nejakú väčšiu rolu. A "pomalosť" mi naozaj nevadí. Je mi už jedno či program beží 10sek, alebo 5sek.

Ešte raz ďakujem všetkým :)
Napísať odpoveď