Skip to content

Latest commit

 

History

History
79 lines (59 loc) · 3.74 KB

presentation_array.md

File metadata and controls

79 lines (59 loc) · 3.74 KB

std::array<T, N>

Tablica o stałym rozmiarze

Coders School

Cechy std::array<T, N>

  • Cache-friendly, tzn. iterując po std::array<T, N>, zostanie on cały załadowany do pamięci podręcznej procesora, co przyspieszy odczytywanie danych
  • Typ <T> może być dowolny. Zarówno typ wbudowany jak int, double, jak i własny zdefiniowany przez nas typ
  • Typ <N> oznacza rozmiar tablicy, który musi być znany już w czasie kompilacji
  • Elementy są ułożone obok siebie w pamięci, tak jak w zwykłej tablicy
  • std::array jest najprymitywniejszym wrapperem na zwykłe tablice, używanie jej jest praktycznie tak samo wydajne
  • Nie możemy dodać nowego elementu, możemy jedynie dokonać modyfikacji już istniejących pól
  • Odczyt oraz modyfikacja elementów jest bardzo szybka
  • Tak jak nie możemy dodać elementów, tak też nie możemy ich usunąć (rozmiar się nie zmienia)

Operacje na std::array<T, N>

  • dodawanie elementu: nie da się
  • modyfikowanie/dostęp do elementu: at(), operator[]
  • pierwszy/ostatni element: back(), front()
  • rozmiar/czy kontener jest pusty: size(), empty()
  • iterator początku/końca: begin(), end()
  • odwrócony (ang. reverse) iterator: rbegin(), rend()
  • stały iterator: cbegin(), cend(), crbegin(), crend()
  • wyczyszczenie kontenera: nie da się, jednak mamy metodę fill, którą możemy np. wyzerować wszystkie elementy
  • przygotowanie elementu do usunięcia: nie da się
  • wymazanie elementów z pamięci: nie da się
  • podmiana całego kontenera: swap()

Przekazanie std::array<T, N> do funkcji

Ponieważ std::array<T, N> ma 2 parametry szablonu, niektórzy mogą mieć problem przy przekazywaniu jej do funkcji, gdyż pisząc std::array<T> zapominając o rozmiarze tablicy.

void print(const std::array<int, 10>& arr) {
    for (const auto& el : arr) {
        std::cout << el << ' ';
    }
    std::cout << '\n';
}

int main() {
    std::array<int, 10> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    print(arr);

    return 0;
}

Zadanie

  • Znajdź dokumentację std::array na cppreference.com
  • Stwórz nowy plik cpp i napisz funkcję main()
  • Stwórz std::array o rozmiarze 10
  • Wypełnij ją wartościami 5
  • Do czwartego elementu przypisz wartość 3
  • Stwórz inną tablicę o tym samym rozmiarze
  • Podmień tablice
  • Wypisz obie tablice, każdą w osobnej linii

Q&A