[BCB v C++] Szybkie dodawanie elemntu do tablicy

0

Mam oto taki kod do dodawania integera do tablicy, problem w tym ze tworze nowa tablice i tam kopiuje zawartosc pierwszej dodaje element i nastepnie kopiuje te tablice do nowej, troche mi to nie pasi ze wzgledu ze w tablicy co ja chce miec mam bitmapy i to mi spowolni juz i tak zzerajacy procesor watek.

typedef DynamicArray<int> INDEX_ARR;

void __fastcall ADD_TO_ARRAY_INTEGER(INDEX_ARR & table, int value)
{
INDEX_ARR temp;
temp.set_length(table.Length+1);

				   int i;

				   for (i = 0; i < table.Length; i++)
					   temp[i] = table[i];


temp[temp.Length - 1] = value;

table.set_length(temp.Length);

				   for (i = 0; i < table.Length; i++)
					   table[i] = temp[i];



temp.set_length(0);
}

Jak inaczej dodac element do tablicy.
Kod moze byc w C++ nie ma to zbytniego znaczenia tablica tez n ie musi byc definiowana przez typedef dynamicarray<>

Ogolnie to musze jak najbardziej zaoszczedzic czas dodawania elementow do tablicy.

tablice statyczne nie za bardzo mi pasuja chociaz moge sztywno ustawic np. 256 elementow.
ale w kodzie na tworzenie obiektow w tablicy moge zmiescic 16,7 milionow elementow z czego pewnienie nie przekrocze 150

0

Użyj listy zamiast tablicy. Albo wektora, który działa w ten sposób, że dopóki ma wolne miejsce na nowe elementy, to je wstawia, a gdy już nie ma nowego miejsca, to powiększa swój rozmiar dwukrotnie i dalej wstawia elementy, dopóki ma wolne miejsce, etc. Rzekomo dowiedziono, że gdy rozmiar zwiększa się dwukrotnie, to jest to najoszczędniejsze rozwiązanie.

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