-
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
Tmoże być dowolny. Zarówno typ wbudowany jakint,double, jak i własny zdefiniowany przez nas typ -
Typ
Noznacza rozmiar tablicy, który musi być znany już w czasie kompilacji -
std::arrayjest najprymitywniejszymwrapperemna 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ćtruedlastd::array - Znajdź dokumentację funkcji
empty()dlastd::arrayna cppreference.com - Przejdź do sekcji Example i kliknij Run przy przykładzie z kodem
- Dopisz nową tablicę intów o rozmiarze 3 i nazwie
otherbez 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::arrayna cppreference.com - Stwórz nowy plik i napisz funkcję
main() - Stwórz
std::arrayprzechowują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