-
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 najprymitywniejszymwrapperem
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)
- 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()
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;
}
- 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