Skip to content

Latest commit

 

History

History
49 lines (34 loc) · 2.82 KB

07-recap.md

File metadata and controls

49 lines (34 loc) · 2.82 KB

Kontenery sekwencyjne

Podsumowanie

Coders School

Co pamiętasz z kontenerów sekwencyjnych?

Zapisz w notatkach do tej lekcji jak najwięcej na poniższe tematy

  1. Wymień kontenery sekwencyjne
  2. Które z nich są cache-friendly?
  3. Jakie są złożoności poszczególnych operacji?
  4. Jakie jest zużycie pamięci i układ danych w pamięci?
  5. Które operacje powodują unieważnienie iteratorów?

Kontenery sekwencyjne


BigO notation


Wskazówki

Który kontener sekwencyjny wybrać?

  • Używaj std:vector jako domyślny kontener
  • Jeśli z góry znasz rozmiar, użyj std::array (w szczególności zamiast zwykłych tablic)
  • Jeśli często dodajesz lub usuwasz elementy z początku lub końca, użyj std::deque
  • Rozważ std::list zamiast std::deque jeśli wstawiasz lub usuwasz elementy ze środka kontenera
  • Zawsze preferuj std::forward_list niż std::list
  • Nie używaj std::list/std::forward_list jeśli potrzebujesz swobodnego dostępu do dowolnego elementu
  • Ogólnie preferuj std::vector niż std::list (pamięć cache)
  • Jeśli wszystkie elementy będą wymagać dużo pamięci, to raczej nie używaj std::array z powodu ograniczenia wielkości stosu
  • Jeśli kopiowanie elementów jest bardzo kosztowne, a wstawianie będzie częste, rozważ użycie std::list/std::forward_list
  • Im mniejsze elementy, tym bardziej prawdopodobne, że std::vector to dobry wybór
  • Im większe elementy, tym większe prawdopodobieństwo, że std::list/std::forward_list mogą okazać się lepsze
  • Ale zawsze... mierz, czy po zmianie faktycznie jest szybciej! ZAWSZE MIERZ!