Zapisanie 100 000 danych.

0

Witam !
Potrzebuję pobierać dane, które możemy zapisać tak:
"n x"
gdzie 1 <= n <=1 000 000 i x tak samo jak n. - czyli typu int
,a z kolei danych tych może być w zestawie do 100 000 czyli np. :

n1 x1
n2 x2
...
n100000 x100000

Chciałem zapisywać to do matrycy lecz przepełniłem stos zapisem :
int tab[2][100000];

Jak mogę zapisać te dane by móc odnosić się do ich poszczególnych elementów.

P.S. zapisanie do pliku odpada.

Z góry dziękuję za odpowiedź.

2

Nie twórz tablicy na stosie, tylko stercie - new[] lub malloc.
Poza tym tworząc taką tablicę wystarczy Ci jeden wymiar+osobna tablica boolów trzymająca informację, czy dana komórka w tablicy jest zajęta. Optymistycznie zajmiesz:
(100000*4 + (100000/8)*1)/1024/1024 = 0.39 MB pamięci, zakładając że sizeof(int) = 4, a jeden bajt odpowiada ośmiu bitom :P
Hint: dzielenie przez osiem wynika z tego, że bool traktowany jest wewnętrznie jako bajt, dlatego w jednej komórce takiej tablicy możesz zapisać aż osiem stanów. Możesz też pójść na łatwiznę i zrobić bezpośrednią relację 1:1 między tymi tablicami. Wtedy uzyskasz zajętość pamięciową 0.48 MB.

1

lub użyj:

static int tab[2][100000];

Z tym że radzę użyć lepiej:

static struct dane { int n,x; } tab[100000];
1

A

std::vector 

by sobie z tym nie poradził?

0

Dziękuję za odpowiedzi :)

A co powoduje zadeklarowanie przez użycie "static" - teoretycznie ?

1

Wrzucenie danych do sekcji data, a nie na stos.

0

O cholera , pierwsze słyszę . Bym był wdzięczny jeśli byś przybliżył mi to pojęcie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1