Jak zadeklarować tablicę dynamiczną dwuwymiarową, jeśli nie zna się jej wymiaru?

0

Jak w temacie, mam problem z zadeklarowaniem tablicy dynamicznej dwuwymiarowej, a dokładniej - nie wiem ile elementów będę w niej trzymać. Mam znany warunek utworzenia kolejnego elementu, myślicie, że najpierw powinnam iterować do momentu, aż warunek przestanie być spełnialny i na tej podstawie utworzyć tablicę ze znaną już wielkością? Bo w przypadku mojego programu to akurat duuużo zachodu i zastanawiałam się, czy nie da się zwiększać tablicy o 1 element z każdym wykonaniem pętli.
Znam drugi wymiar od początku, ale nie mam pojęcia, jak to zrobić poprawnie bez podawania tego pierwszego.
No i kolejne elementy mają być typu char, chociaż to w sumie mało istotne.
Czy takie coś jest w ogóle możliwe?
Ktoś pomoże?

I uprzedzając pytania, zależy mi, żeby to była tablica, a nie np lista

0

Czemu sobie nie użyjesz std::vector?

0

Dynamiczna tablica - std::vector.
Brzmi jakbyś chciała dynamiczną tablicę stringów - czyli std::vector<std::string> (std::string)

Opisz może dokładniej swój problem, bo na razie wygląda to trochę na opis XY.

0

Hmm, dokładnie chodzi o to, że mam bazę danych w postaci listy jednokierunkowej i BST. Do tej bazy wprowadzam dane użytkowników z pliku. Mam zbadać czas usunięcia wszystkich użytkowników z bazy ("usuwając element po elemencie losując poszczególne elementy", a jako klucz w operacji mam traktować 6-cyfrowy numer użytkownika). I teraz zastanawiałam się jak to przeprowadzić, pomyślałam, że jedynym sensownym rozwiązaniem będzie utworzenie takiej mini-bazy z tymi numerami użytkowników w tablicy, później losowanie numeru, usuwanie użytkownika, ponowne tworzenie mini-bazy (żeby nie próbować usunąć przypadkiem użytkownika, którego już nie ma - bo "element po elemencie").
I właśnie nie chciałam tej mini-bazy tworzyć jako statyczną tablicę (stack overflow by się pojawił przy dużej ilości danych, prawda?)
I też nie chciałam jej tworzyć jako listę, bo to w sumie byłaby kolejna struktura użyta do badań struktur iii no nie wiem, czy do końca o to chodziło...

0

Możesz użyć mapy, w której kluczem będzie numer użytkownika, natomiast jego danymi, które chcesz usunąć dowolna struktura (jeśli takiej potrzebujesz).
Przykład:

struct userData
{
    // users data gathered from a file
}

std::map< std::string, userData > userBase;

Wtedy będziesz mogła usuwać z tej bazy użytkowników na podstawie klucza, używając metody erase.
Nie będziesz też musiala martwić się o usuwanie usuniętych już użytkowników - w mapie taki problem nie wystąpi.

edit: Jeśli nie potrzebujesz uporządkowania elementów w swojej bazie, to warto zastanowić się nad unordered_map. Nieuporządkowana może być szybsza.

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