std::array o stałym rozmiarze
Bezpieczny zamiennik tablicy C
std::array o stałym rozmiarze to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.
Bezpieczna tablica C
std::array<T, N> to tablica o stałym rozmiarze, która zna własny rozmiar i zachowuje się jak pełnoprawny kontener. Należy dołączyć <array>.
#include <iostream>
#include <array>
int main() {
std::array<int, 3> a = {1, 2, 3};
std::cout << a[0] << " " << a.size() << "\n";
}Zna swój rozmiar
W przeciwieństwie do zwykłej tablicy, która ulega konwersji do wskaźnika, std::array zawsze udostępnia swój rozmiar za pomocą size().
#include <iostream>
#include <array>
int main() {
std::array<double, 4> a{};
std::cout << a.size() << "\n"; // 4
}Pętla for oparta na zakresie
Ponieważ jest pełnoprawnym kontenerem, można ją prz iterować za pomocą pętli for opartej na zakresie.
#include <iostream>
#include <array>
int main() {
std::array<int, 3> a = {10, 20, 30};
for (int x : a) std::cout << x << " ";
std::cout << "\n";
}Sprawdzanie zakresu za pomocą at()
at(i) zgłasza wyjątek std::out_of_range dla nieprawidłowego indeksu, natomiast operator[] nie wykonuje sprawdzania — należy wybrać odpowiednią opcję w zależności od wymagań dotyczących bezpieczeństwa.
#include <iostream>
#include <array>
int main() {
std::array<int, 2> a = {1, 2};
try { a.at(5); }
catch (const std::out_of_range&) { std::cout << "out of range\n"; }
}front, back i data
Pomocnicze funkcje dostępu: front() i back() zwracają odpowiednio pierwszy i ostatni element, a data() udostępnia zwykły wskaźnik na potrzeby interfejsów C.
#include <iostream>
#include <array>
int main() {
std::array<int, 3> a = {7, 8, 9};
std::cout << a.front() << " " << a.back() << "\n";
}Kopiowanie przez wartość
std::array można bez problemu kopiować za pomocą =, co kopiuje każdy element, w przeciwieństwie do zwykłych tablic, które ulegają konwersji do wskaźników.
#include <iostream>
#include <array>
int main() {
std::array<int, 3> a = {1, 2, 3};
std::array<int, 3> b = a; // full copy
b[0] = 99;
std::cout << a[0] << " " << b[0] << "\n"; // 1 99
}Współpraca z algorytmami
Standardowe algorytmy akceptują iteratory std::array; tutaj sortujemy tablicę.
#include <iostream>
#include <array>
#include <algorithm>
int main() {
std::array<int, 4> a = {4, 1, 3, 2};
std::sort(a.begin(), a.end());
for (int x : a) std::cout << x << " ";
std::cout << "\n";
}Wypełnianie i porównywanie
fill(value) ustawia wartość każdego elementu; std::array obsługuje również porównywanie elementów za pomocą operatora ==.
#include <iostream>
#include <array>
int main() {
std::array<int, 3> a{};
a.fill(5);
std::array<int, 3> b = {5, 5, 5};
std::cout << (a == b) << "\n"; // 1
}Rozmiar jest częścią typu
Długość N jest zapisana w typie, dlatego funkcja przyjmująca std::array<int,3> nie zaakceptuje tablicy o rozmiarze 4. Właśnie w takich sytuacjach później przydaje się std::span.
Alokacja na stosie
std::array przechowuje elementy bezpośrednio w obiekcie (zwykle na stosie), bez alokacji na stercie, dzięki czemu jest szybki i przewidywalny w przypadku danych o stałym rozmiarze.
Tablica a vector
Należy użyć std::array, gdy rozmiar jest znany w czasie kompilacji i nie będzie się zmieniać. std::vector należy użyć, gdy rozmiar może zmieniać się w czasie działania programu.
Szybkie sprawdzenie
Proszę sprawdzić zrozumienie zagadnień związanych z std::array.
Podsumowanie
Poznali Państwo std::array:
- Kontener o stałym rozmiarze, który zna swój rozmiar i nie wymaga alokacji na stercie.
at()sprawdza zakres, a[]tego nie robi.- Można go kopiować i porównywać oraz używać z algorytmami.
- Rozmiar
Njest częścią typu.
Często zadawane pytania
Czy lekcja „std::array o stałym rozmiarze” jest bezpłatna?
Tak — pełny tekst „std::array o stałym rozmiarze” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „std::array o stałym rozmiarze”?
Bezpieczny zamiennik tablicy C Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C++ Academy?
Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „std::array o stałym rozmiarze”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?
Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- std::array o stałym rozmiarze
- Podstawy std::span
- Przekazywanie spanów do funkcji
- Zakresy i podspany