-
Cache-friendly
- Elementy są ułożone obok siebie w pamięci, tak jak w zwykłej tablicy
-
Iterując po
std::array<T, N>
, kolejne jego elementy będą ładowane do pamięci podręcznej procesora z wyprzedzeniem, co niesamowicie przyspieszy odczytywanie danych
-
Typ
T
może być dowolny. Zarówno typ wbudowany jakint
,double
, jak i własny zdefiniowany przez nas typ -
Typ
N
oznacza rozmiar tablicy, który musi być znany już w czasie kompilacji -
std::array
jest najprymitywniejszymwrapperem
na zwykłe tablice, używanie jej jest praktycznie tak samo wydajne -
Rozmiar się nie zmienia, więc:
- nie możemy dodawać nowych elementów
- nie możemy usunąć istniejących elementów
- możemy dokonać modyfikacji istniejących elementów
Operacja | Metody |
---|---|
dodawanie elementu | nie da się |
modyfikacja/dostęp do elementu | at() , operator[] |
pierwszy/ostatni element | back() , front() |
rozmiar | size() |
odwrócony (ang. reverse) iterator | rbegin() , rend() |
stały iterator | cbegin() , cend() , crbegin() , crend() |
wyczyszczenie kontenera | nie da się, można użyć fill() , aby wyzerować wszystkie elementy |
przygotowanie elementu do usunięcia | nie da się |
wymazanie elementów z pamięci | nie da się |
Ponieważ std::array<T, N>
ma 2 parametry szablonowe, niektórzy mogą mieć problem przy przekazywaniu jej do funkcji, gdyż pisząc std::array<T>
zapominają 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;
}
- Pomyśl, kiedy
empty()
może zwrócićtrue
dlastd::array
- Znajdź dokumentację funkcji
empty()
dlastd::array
na cppreference.com - Przejdź do sekcji Example i kliknij Run przy przykładzie z kodem
- Dopisz nową tablicę intów o rozmiarze 3 i nazwie
other
bez przypisywania jej elementów -std::array<int, 3> other;
- Dodaj kod odpowiedzialny za wyświetlenie informacji czy ta tablica jest pusta.
- Zweryfikuj to ze swoją intuicją z pierwszego punktu 🙂
- Wypisz zawartość tablicy
other
- Zmień kompilator np. na clang i zobacz czy zawartość jest ta sama
- Znajdź dokumentację
std::array
na cppreference.com - Stwórz nowy plik i napisz funkcję
main()
- Stwórz
std::array
przechowujący wartości całkowitoliczbowe 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