Wpis z mikrobloga

@kuncol02: @asciiterror: mam za zadanie napisanie klasy string, do obsługi tekstu, która allokuje tyle pamięci ile trzeba na przechowanie danego rozmiaru tekstu, oraz informacji ile tekstu jest w danej chwili zaalokowanego (tekst przez char*) i do tego mam dorzucić przeciążenie opertora>> i nie mam pojęcia jak się do tego zabrać...
mam w funkcji istream& is, przed wpisaniem wartości do tablicy char pownienem ją zaalokować, tylko nie wiem jak rozwiązać problem
@OstryKepucz: a to implementacja ci nie pomoże raczej, może być zbyt skomplikowana jak na ten poziom.
najprościej byłoby zapewne tak:
1. czytasz znak z istream
2. sprawdzasz czy masz miejsce w swojej tablicy
3. jeśli tak to wpisujesz na koniec i GOTO 1
4. jeśli nie to alokujesz więcej pamięci, przepisujesz wszystko co było i GOTO 3
tylko nie wiem jak rozwiązać problem rozmiaru tego tekstu, który został z inputa wczytany


@OstryKepucz: skąd pomysł że został już wczytany w całości? Możesz czytać sobie plik po znaku używając std::istream::get i zapominając o wszystkich buforach po drodze każdy kolejny znak jest czytany z dysku
@asciiterror: ale wtedy będę zwalniał copy z nulla czy to poprawne? :/

zwiększaj wielkość np. 1.5 raza, w każdym razie mniej niż 2x

niezbyt rozumiem o co Ci tutaj chodzi- size_of_text to int więc za każdym razem zwiększam go o 1 (chyba że czegoś nie rozumiem :P )
@OstryKepucz: trochę skrót myślowy. Z uwagi na to jak komputery działają - mają cache między procesorem i pamięcią - najlepiej jak najwięcej razy odnosić się do tego samego fragmentu pamięci, bo wtedy ten fragment trafia do cache i działa o wiele szybciej. Poza tym alokacje pamięci są powolne.
Tak jak robisz teraz, to 1) przy wpisywaniu danych twój string nigdy nie będzie w cache, czyli działa powoli i 2) dla stringa