Zależy do jakich rozwiązań... Co dokładnie chcesz wykonywac na tych kontenerach ?
Charakterystka:
- std::vector - pochodzi z grupy kontenerów sekwencyjnych(sequence containers). Należą do nich vector, deque, list, forward_list, array. Poprzez zastosowanie iteratrów, sa praktycznie wymienne między sobą.
Zalety kontenera typu vector:
- dynamicznie alokowany na stercie
- posiada zmienny rozmiar
- można używać go jak tablicy(elementy w pamięci są zawsze obok siebie)
- szybki dostęp do każdego elementu
- szybkie dodawanie/usuwanie na końcu, O(1)
- wolne w środku i na początku, O(n)
- wolne przeszukiwanie O(n)
Tutaj jeszcze mała uwaga, do Twojego pomysłu. Indeksowanie enumem vektora, lub tablicy, może z czasem przynieść opłakane skutki. Jak kiedyś zwiekszysz enuma, a nie zmienisz rozmiarów vektora i tablicy, będziesz sie odwoływał do kawalka pamięci, którego byś nie chciał. Ciężko taki błąd później znaleść.
- std::unordered_map (implementuja hash_table) - szybkośc działania zależy od zaimplementowaniej funkcji hash'ującej. Dla typów podstawowych standrad posiada szybka implementację. Natomiast dla typów własnych, zdefionowane przez programiste.
Charakterystka:
- szybkie szukanie elementów, O(1) - wydajnośc może spaść dla słabej funkcji hashującej(hash collision), w najgorszym wypadku zlozoność będzie O(n)
- szybkie wstawianie O(1) - wydajnośc może spaść dla słabej funkcji hashującej(hash collision), w najgorszym wypadku złożonośc będzie O(n)
- moze posiadac tylko jeden element o tym samym kluczu. Para <key, value>.
Mam nadzieję, że coś pomogłem. Decyzja należy do Ciebie.