Operacja na dynamicznych obiektach

Operacja na dynamicznych obiektach
  • Rejestracja: dni
  • Ostatnio: dni
0

Hello. Nigdy nie miałem takiego problemu jaki mam teraz. Pytani brzmi: czy da sie 'powiększać' tablicę dynamiczną ?

tzn:
mam przykład:
string *fileParse;

wczytuje każdy wiersz pliku do osobnego stringa w pętli:
while(!plik.eof())
{
int i = 0;
fileParse = new string;
getline(plik, fileParse[i])
}

Oczywiście przykład u góry jest z ypud (czytaj od tyłu) i wątpię by działał. Po skończeniu takiej operacji fileParse byłaby i-elementową tablicą typu string.

Schematycznie:
1 obieg pętli : tworzy się obiekt, mam tablice 0-element (tak, tak wiem...), do fileParse[0] zostaje przydzielony 1 wiersz.
2 obieg pętli : tworzy się obiekt, mam tablice 1-element, do fileParse[1] zostaje przydzielony 2 wiersz
...................
i-ty obiekt pętli: towrzy się obiekt, mam tablice i-element, do parseFile[i] zostaje przypisany i+1 wiersz.

Hmm chyba jasne. Jedyny sposób jaki znam, to otworzyć plik, zliczyć wiersze do zmiennej, zamknac plik, stworzyć tablicę z podanych wierszy -1. Później zaś, aby operować na tym samym pliku znów muszę go otworzyć i tak w kółko ; s

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
0

Zamiast męczyć się z jakimiś dziwacznymi rozwiązaniami użyj std::vector.

http://www.cplusplus.com/reference/stl/vector/

  • Rejestracja: dni
  • Ostatnio: dni
0

wiem o vector ale akurat mam narzucone iż nie mogę użyć tej biblioteki

N1
  • Rejestracja: dni
  • Ostatnio: dni
0

próbowałeś użyć funkcji realloc?
http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/

Nie wiem czy jest inna możliwość jak po prostu zaalokować nową, większą tablicę i przekopiować zawartość tej starej do nowej. Zawsze możesz spróbować użyć list, tam nie ma problemu z dodawaniem nowych elementów.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.