C++ kolekcje różnice

0

Witam,
czy mógłby ktoś napisać podstawowe różnice w kolekcjach STL?
Chodzi mi o opis w stylu
lista - najlepsza jeśli wiesz że bedziesz przelatywał przez cała kolekcję a nie odwoływał się do konkretnego elementu w stylu lista[1];
itd.

Z góry dzięki i przepraszam za takie (pewnie proste i podstawowe) pytanie.

Po prostu robię sobie projekcik (dla nauki, treningu własnego) i nie wiem kiedy używać vectora, kiedy listy, kiedy kolejki (deque), itd.

0

Forum nie jest od prowadzenia wykładów. Tak ogólnie to się nazywa struktury danych. Tu są krótko opisane:
http://www.algorytm.org/klasyczne/
Co do vector, to jest to tablica, tyle, że dynamicznie rozszerzalna.

1

Żartujesz sobie?
http://www.cplusplus.com/reference/stl/
Klikasz na wybrany kontener i masz elaborat na temat tego co cię interesuje...

0

Ok, dzięki.
Chodzi mi też np o takie sytuacje typu:
wiem, że będę miał kolekcję elementów które na pewno będą się od siebie różnić (nie będzie dwóch takich samych).
Pytanie czy lepiej użyć Set czy List. Set niby jest stworzony do takiej sytuacji żeby były niepowtarzalne dane, tak? Ale czy zawsze w takim wypadku jest najlepszym wyborem?

0

Chodzi mi również o szybkość.
Np potrzebuję tablicę dwuymiarową i nie wiem czy użyć list czy vectora.

0

Super, ale umiesz czytać? Czy tylko pisać? o Vector:

Compared to arrays, they provide almost the same performance for these tasks, plus they have the ability to be easily resized. Although, they usually consume more memory than arrays when their capacity is handled automatically (this is in order to accommodate extra storage space for future growth).

Compared to the other base standard sequence containers (deques and lists), vectors are generally the most efficient in time for accessing elements and to add or remove elements from the end of the sequence. For operations that involve inserting or removing elements at positions other than the end, they perform worse than deques and lists, and have less consistent iterators and references than lists.

0

Wszystko zależy od implementacji oraz od tego jak to zamierzasz używać.
Z grubsza:
Tablica: dodawanie elementów i ich usuwanie - wolne (N); dostęp wg numeru - szybki (1);
Lista: dodawanie elementów i ich usuwanie - szybkie (1); dostęp wg numeru - wolny (N);
Drzewo: dodawanie elementów i ich usuwanie - dosyć szybkie (log(N)); dostęp wg numeru - dosyć szybki (log(N));

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